Skip to content

Commit

Permalink
Training units - barracks prepared
Browse files Browse the repository at this point in the history
  • Loading branch information
Spamercz committed Feb 14, 2016
1 parent 8aa7f7c commit 8e6b6b4
Show file tree
Hide file tree
Showing 21 changed files with 1,094 additions and 242 deletions.
6 changes: 5 additions & 1 deletion App/Config/config.neon
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ services:
- App\FrontModule\Model\ABData\ABDataModel
- App\FrontModule\Model\FData\FDataModel
- App\FrontModule\Model\TData\TDataModel
- App\FrontModule\Model\Units\UnitsModel
- App\GameModule\Model\Units\UnitsModel
- App\FrontModule\Model\User\RegisterService(%protection%)
- App\FrontModule\Model\VData\VDataModel(%storageCapacity%, %storageMultiplier%)
- App\FrontModule\Model\VData\VillageService
Expand All @@ -55,6 +55,10 @@ services:
- App\GameModule\Model\Event\ProcessCulturePoints
- App\GameModule\Model\Diplomacy\DiplomacyModel
- App\GameModule\Controls\BuildingDetail\IBuildingDetailControl
- App\GameModule\Controls\Train\ITrainControl
- App\GameModule\Model\Units\UnitModel
- App\GameModule\Model\Units\UnitService(%speed%)
- App\GameModule\Model\Units\TrainingModel

# commands
-
Expand Down
4 changes: 2 additions & 2 deletions App/FrontModule/Model/OData/OasisService.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@ class OasisService
*/
private $WDataModel;
/**
* @var App\FrontModule\Model\Units\UnitsModel
* @var App\GameModule\Model\Units\UnitsModel
*/
private $unitsModel;


public function __construct(
ODataModel $ODataModel,
App\FrontModule\Model\WData\WDataModel $WDataModel,
App\FrontModule\Model\Units\UnitsModel $unitsModel
App\GameModule\Model\Units\UnitsModel $unitsModel
) {
$this->ODataModel = $ODataModel;
$this->WDataModel = $WDataModel;
Expand Down
10 changes: 0 additions & 10 deletions App/FrontModule/Model/Units/UnitsModel.php

This file was deleted.

4 changes: 2 additions & 2 deletions App/FrontModule/Model/User/RegisterService.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class RegisterService
*/
private $FDataModel;
/**
* @var App\FrontModule\Model\Units\UnitsModel
* @var App\GameModule\Model\Units\UnitsModel
*/
private $unitsModel;
/**
Expand All @@ -47,7 +47,7 @@ public function __construct(
UserModel $userModel,
App\FrontModule\Model\WData\WDataModel $WDataModel,
App\FrontModule\Model\FData\FDataModel $FDataModel,
App\FrontModule\Model\Units\UnitsModel $unitsModel,
App\GameModule\Model\Units\UnitsModel $unitsModel,
App\FrontModule\Model\TData\TDataModel $TDataModel,
App\FrontModule\Model\ABData\ABDataModel $ABDataModel,
App\FrontModule\Model\VData\VDataModel $VDataModel,
Expand Down
7 changes: 7 additions & 0 deletions App/FrontModule/Model/User/UserService.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@

class UserService
{
const TRIBE_ROMANS = 1;
const TRIBE_TEUTONS = 2;
const TRIBE_GAULS = 3;
const TRIBE_NATURE = 4;
const TRIBE_NATARS = 5;
const TRIBE_BARBARIAN = 6;

/**
* @var UserModel
*/
Expand Down
89 changes: 84 additions & 5 deletions App/GameModule/Controls/BuildingDetail/BuildingDetailControl.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,53 @@

class BuildingDetailControl extends Nette\Application\UI\Control
{
/**
* @var App\GameModule\Model\Units\UnitService
*/
private $unitService;
/**
* @var App\GameModule\Controls\Train\ITrainControl
*/
private $trainControl;
/**
* @var App\FrontModule\Model\VData\VillageService
*/
private $villageService;
/**
* @var array
*/
private $units;
/**
* @var App\GameModule\DTO\Village
*/
private $village;
/**
* @var App\GameModule\Model\Units\TrainingModel
*/
private $trainingModel;

public function render()

public function __construct(
App\GameModule\Model\Units\UnitService $unitService
, App\GameModule\Controls\Train\ITrainControl $trainControl
, App\FrontModule\Model\VData\VillageService $villageService
, App\GameModule\Model\Units\TrainingModel $trainingModel
)
{
$this->unitService = $unitService;
$this->trainControl = $trainControl;
$this->villageService = $villageService;
$this->trainingModel = $trainingModel;
}


public function attached($presenter)
{
parent::attached($presenter);
$this->template->current = $this->presenter->template->current;
$this->template->next = $this->presenter->template->next;

$this->village = $this->villageService->getVillage($this->presenter->getParameter('id'));
$building = $this->presenter->getParameter('building');
switch ($building) {
case App\GameModule\Model\Building\BuildingModel::WOODCUTTER:
Expand All @@ -21,46 +62,84 @@ public function render()
case App\GameModule\Model\Building\BuildingModel::CROPLAND:
$this->renderResourceField();
break;

case App\GameModule\Model\Building\BuildingModel::WAREHOUSE:
case App\GameModule\Model\Building\BuildingModel::CRANNY:
case App\GameModule\Model\Building\BuildingModel::GRANARY:
case App\GameModule\Model\Building\BuildingModel::TRAPPER:
$this->renderCapacity();
break;

case App\GameModule\Model\Building\BuildingModel::MAIN_BUILDING:
$this->renderMainBuilding();
break;

case App\GameModule\Model\Building\BuildingModel::BARRACKS:
$this->renderBarracks();
break;
}
}


public function render()
{
$this->template->render();
}


public function renderBarracks()
{
$this->units = $this->unitService->getAvailableUnits($this->village, App\GameModule\Model\Building\BuildingModel::BARRACKS);
$this->template->units = $this->units;
$this->template->available = $this->unitService->getTrainableUnits($this->village, $this->units);
$this->template->current = $this->unitService->getUnits($this->village);
$queue = $this->trainingModel->getByBuilding($this->village, App\GameModule\Model\Building\BuildingModel::BARRACKS);
foreach ($queue as $item) {
$item->unit = $this->unitService->getUnit($item->unit);
}
$this->template->queue = $queue;

$this->template->setFile(__DIR__ . '/Template/Barracks.latte');
$this->template->render();
}


public function createComponentTrainBarracks()
{
/** @var App\GameModule\Controls\Train\TrainControl|Nette\Application\UI\Form $form */
$form = $this->trainControl->create($this->units);

$form->onSuccess[] = [$this, 'train'];

return $form;
}


/**
* @param App\GameModule\Controls\Train\TrainControl $form
* @param \stdClass $values
*/
public function train($form, $values)
{
$this->unitService->train($form, $values, $this->village);

$this->redirect('this');
}


public function renderResourceField()
{
$this->template->setFile(__DIR__ . '/Template/ResourceField.latte');
$this->template->render();
}


public function renderMainBuilding()
{
$this->template->setFile(__DIR__ . '/Template/MainBuilding.latte');
$this->template->render();
}


public function renderCapacity()
{
$this->template->setFile(__DIR__ . '/Template/Capacity.latte');
$this->template->render();
}
}
85 changes: 73 additions & 12 deletions App/GameModule/Controls/BuildingDetail/Template/Barracks.latte
Original file line number Diff line number Diff line change
@@ -1,12 +1,73 @@
<table cellpadding="1" cellspacing="1" class="build_details">
<thead>
<tr>
<td>Troops</td>
<td>No.</td>
<td>Max.</td>
</tr>
</thead>
<tbody>

</tbody>
</table>
{form trainBarracks}
<table cellpadding="1" cellspacing="1" class="build_details">
<thead>
<tr>
<td>Troops</td>
<td>No.</td>
<td>Max.</td>
</tr>
</thead>
<tbody>
{foreach $units as $unit}
<tr>
<td class="desc">
<div class="tit">
<img class="unit u{$unit->getId()}" src="{$baseUrl}/img/x.gif" alt="{$unit->getName()}" title="{$unit->getName()}" />
<a href="#">{$unit->getName()}</a> <span class="info">(Available: {$current['u' . $unit->getId()]})</span>
</div>
<div class="details">
<img class="r1" src="{$baseUrl}/img/x.gif" alt="Wood" title="Wood" />{$unit->getWood()}|{*
*}<img class="r2" src="{$baseUrl}/img/x.gif" alt="Clay" title="Clay" />{$unit->getClay()}|{*
*}<img class="r3" src="{$baseUrl}/img/x.gif" alt="Iron" title="Iron" />{$unit->getIron()}|{*
*}<img class="r4" src="{$baseUrl}/img/x.gif" alt="Crop" title="Crop" />{$unit->getCrop()}|{*
*}<img class="r5" src="{$baseUrl}/img/x.gif" alt="Crop consumption" title="Upkeep" />{$unit->getUpkeep()}|{*
*}<img class="clock" src="{$baseUrl}/img/x.gif" alt="Duration" title="Duration" />{$unit->getTime()|date:'G:i:s'}|{*
*}<a href="{plink ':Game:Build:Redistribute'}" title="NPC trade">
<img class="npc" src="{$baseUrl}/img/x.gif" alt="NPC trade" title="NPC trade" />
</a>
</div>
</td>
<td class="val">
{input $unit->getId().'number'}
</td>
<td class="max">
<a href="#">({$available[$unit->getId()]})</a>
</td>
</tr>
{/foreach}
</tbody>
</table>
<p>
<input n:name="submit" type="image" id="btn_train" class="dynamic_img" value="ok" src="{$baseUrl}/img/x.gif" alt="train"/>
</p>
<table cellpadding="1" cellspacing="1" class="under_progress">
<thead>
<tr>
<td>Troops in training</td>
<td>Duration</td>
<td>Finished</td>
</tr>
</thead>
<tbody>
{foreach $queue as $single}
<tr>
<td class="desc">
<img class="unit u{$single->unit->getId()}" src="{$baseUrl}/img/x.gif" alt="{$single->unit->getName()}" title="{$single->unit->getName()}" />
{$single->amt} {$single->unit->getName()}
</td>
<td class="dur">
<span id="timer1">{($single->amt * $single->eachtime)|date:'G:i:s'}</span>
</td>
<td class="fin">
{($single->amt * $single->eachtime + $single->timestamp)|date:'G:i:s'}
</td>
</tr>
{/foreach}
<tr class="next">
<td colspan="3">
The next unit will be finished in <span id="timer2">{($queue[0]->timestamp - time() + $queue[0]->eachtime)|date:'G:i:s'}</span>
</td>
</tr>
</tbody>
</table>
{/form}
13 changes: 13 additions & 0 deletions App/GameModule/Controls/Train/ITrainControl.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace App\GameModule\Controls\Train;


interface ITrainControl
{
/**
* @param array $units
* @return TrainControl
*/
public function create($units = []);
}
65 changes: 65 additions & 0 deletions App/GameModule/Controls/Train/TrainControl.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
<?php

namespace App\GameModule\Controls\Train;

use Nette;
use App;

class TrainControl extends Nette\Application\UI\Form
{
/**
* @var array
*/
private $units;
/**
* @var App\FrontModule\Model\VData\VillageService
*/
private $villageService;


public function __construct(
$units
, App\FrontModule\Model\VData\VillageService $villageService
) {
$this->units = $units;
$this->villageService = $villageService;
}


public function attached($presenter)
{
parent::attached($presenter);

/** @var App\GameModule\DTO\Unit $unit */
foreach ($this->units as $unit) {
$this->addText($unit->getId() . 'number', $unit->getName())
->setAttribute('class', 'text')
->addCondition(Nette\Forms\Form::NUMERIC);
}

$this->addSubmit('submit', 'Train')
->setAttribute('type', 'image')
->setAttribute('class', 'dynamic_img')
->setAttribute('id', 'btn_train');

return $this;
}


/**
* @return array
*/
public function getUnits()
{
return $this->units;
}


/**
* @param array $units
*/
public function setUnits($units)
{
$this->units = $units;
}
}
Loading

0 comments on commit 8e6b6b4

Please sign in to comment.