예제 #1
0
    /**
     * Create a new blueprint from the given array.
     * array(
     *     'name' => 'test',
     *     'userId' => 1,
     *     'itemId' => 1,
     *     'itemTypeId => 1,
     *     'damageType' => 'damage',
     *     'material' => array(
     *         0 => 1,
     *     ),
     *     'percentage' => array(
     *         0 => 100
     *     ),
     *     'materialWeaponModificator' => '0/0',
     *     'technique' => array(
     *         0 => 1,
     *     )
     *     'upgradeHitPoints' => 0,
     *     'upgradeBreakFactor' => 0,
     *     'upgradeInitiative' => 0,
     *     'upgradeWeaponModificator' => '0/0',
     * )
     *
     * @param array $data
     *
     * @return boolean
     */
    public static function create($data)
    {
        if (!$data['name'] && !$data['itemId'] && count($data['material']) === 0) {
            return false;
        }
        $weaponModificatorString = '';
        if (!empty($data['materialWeaponModificator'])) {
            foreach ($data['materialWeaponModificator'] as $materialWeaponModificator) {
                $weaponModificatorString .= $materialWeaponModificator . ' || ';
            }
        }
        $weaponModificators = \Helper\WeaponModificator::getWeaponModificatorArray(substr($weaponModificatorString, 0, -2));
        $upgradeWeaponModificator = \Helper\WeaponModificator::toWeaponModificatorArray($data['upgradeWeaponModificator']['attack'], $data['upgradeWeaponModificator']['parade']);
        $sql = '
			INSERT INTO blueprints
			SET name = ' . \sqlval($data['name']) . ',
				userId = ' . \sqlval($data['userId']) . ',
				itemId = ' . \sqlval($data['itemId']) . ',
				itemTypeId = ' . \sqlval($data['itemTypeId']) . ',
				damageType = ' . \sqlval($data['damageType']) . ',
				materialWeaponModificator = ' . \sqlval(json_encode($weaponModificators)) . ',
				upgradeHitPoints = ' . \sqlval($data['upgradeHitPoints']) . ',
				upgradeBreakFactor = ' . \sqlval($data['upgradeBreakFactor']) . ',
				upgradeInitiative = ' . \sqlval($data['upgradeInitiative']) . ',
				upgradeWeaponModificator = ' . \sqlval(json_encode($upgradeWeaponModificator)) . ',
				bonusRangedFightValue = ' . \sqlval($data['bonusRangedFightValue']) . ',
				reducePhysicalStrengthRequirement = ' . \sqlval($data['reducePhysicalStrengthRequirement']) . '
		';
        $blueprintId = query($sql);
        foreach ($data['material'] as $key => $material) {
            $materialAssetId = false;
            $sql = '
				SELECT
					`materialAssetId`,
					`percentage`
				FROM materialAssets
				WHERE `materialId` = ' . \sqlval($material) . '
					AND !deleted
				ORDER BY percentage DESC
			';
            $materialAssets = \query($sql, true);
            foreach ($materialAssets as $materialAsset) {
                if ($data['percentage'][$key] >= $materialAsset['percentage']) {
                    $materialAssetId = $materialAsset['materialAssetId'];
                    break;
                }
            }
            if (empty($materialAssetId)) {
                $materialAssetId = $materialAssets[0]['materialAssetId'];
            }
            $sql = '
				INSERT INTO materialsToBlueprints
				SET materialId = ' . \sqlval($material) . ',
					blueprintId = ' . \sqlval($blueprintId) . ',
					materialAssetId = ' . \sqlval($materialAssetId) . ',
					percentage = ' . \sqlval($data['percentage'][$key]) . ',
					talent = ' . \sqlval($data['talent'][$key]) . '
			';
            query($sql);
        }
        if (!empty($data['technique'])) {
            foreach ($data['technique'] as $technique) {
                $sql = '
					INSERT INTO techniquesToBlueprints
					SET techniqueId = ' . \sqlval($technique) . ',
						blueprintId = ' . \sqlval($blueprintId) . '
				';
                query($sql);
            }
        }
        return true;
    }
예제 #2
0
    /**
     * Create a new material asset from the given array.
     * array(
     *     'percentage' => array(
     *         0 => 50,
     *         1 => 50,
     *     ),
     *     'timeFactor' => array(
     *         0 => 1,
     *         1 => 1,
     *     ),
     *     'priceFactor' => array(
     *         0 => 2,
     *         0 => 1.5,
     *     ),
     *     'priceWeight' => array(),
     *     'currency' => array(
     *         0 => 'S',
     *         1 => 'D',
     *     ),
     *     'proof' => array(
     *         0 => 0,
     *         1 => -1,
     *     ),
     *     'breakFactor' => array(
     *         0 => 1,
     *         1 => -1,
     *     ),
     *     'hitPoints' => array(
     *         0 => 0,
     *         1 => 1,
     *     ),
     *     'armor' => array(
     *         0 => 0,
     *         1 => 0,
     *     ),
     *     'weaponModificator' => array(
     *         0 => '0/0',
     *         1 => '-1/0',
     *     ),
     * )
     *
     * @param array $data
     *
     * @return boolean
     */
    public static function create($data)
    {
        if (!$data['materialId'] && !$data['percentage'] && !$data['timeFactor'] && (!$data['priceFactor'] || $data['priceWeight'])) {
            return false;
        }
        $weaponModificators = array();
        if (!empty($data['weaponModificator'])) {
            $weaponModificators = \Helper\WeaponModificator::getWeaponModificatorArray($data['weaponModificator']);
        }
        if (!empty($data['priceWeight'])) {
            $moneyHelper = new \Helper\Money();
            $data['priceWeight'] = $moneyHelper->exchange($data['priceWeight'], $data['currency']);
        }
        $sql = '
			INSERT INTO materialAssets
			SET materialId = ' . \sqlval($data['materialId']) . ',
				percentage = ' . \sqlval($data['percentage']) . ',
				timeFactor = ' . \sqlval($data['timeFactor']) . ',
				priceFactor = ' . \sqlval($data['priceFactor']) . ',
				priceWeight = ' . \sqlval($data['priceWeight']) . ',
				proof = ' . \sqlval($data['proof']) . ',
				breakFactor = ' . \sqlval($data['breakFactor']) . ',
				hitPoints = ' . \sqlval($data['hitPoints']) . ',
				armor = ' . \sqlval($data['armor']) . ',
				weaponModificator = ' . \sqlval(json_encode($weaponModificators)) . '
		';
        query($sql);
        return true;
    }
예제 #3
0
 /**
  * Update the item.
  *
  * @param array $data
  *
  * @return integer
  */
 public function update($data)
 {
     $update = '';
     $data['twoHanded'] = $data['twoHanded'] ? $data['twoHanded'] : 0;
     $data['improvisational'] = $data['improvisational'] ? $data['improvisational'] : 0;
     $data['privileged'] = $data['privileged'] ? $data['privileged'] : 0;
     foreach ($data as $key => $value) {
         if ($key == 'currency') {
             continue;
         }
         if ($key == 'price') {
             $moneyHelper = new \Helper\Money();
             $value = $moneyHelper->exchange($value, $data['currency']);
         } elseif ($key == 'weaponModificator') {
             $value = json_encode(\Helper\WeaponModificator::getWeaponModificatorArray($value));
         }
         $update .= \sqlval($key, false) . ' = ' . \sqlval($value) . ",\n";
     }
     $update = substr($update, 0, -2);
     $sql = '
         UPDATE items
         SET ' . $update . '
         WHERE `itemId` = ' . \sqlval($this->itemId) . '
     ';
     $result = \query($sql);
     if ($result) {
         $this->fill($data);
     }
     return $result;
 }