207 lines
5.4 KiB
PHP
207 lines
5.4 KiB
PHP
<?php
|
||
|
||
namespace mt;
|
||
|
||
use phpcommon;
|
||
|
||
class Item {
|
||
|
||
/*
|
||
0 无功能
|
||
1 不进背包道具(数值道具)
|
||
2 礼包
|
||
3 英雄
|
||
4 英雄皮肤
|
||
5 头像
|
||
6 头像框
|
||
7 枪械
|
||
8 枪械皮肤
|
||
9 功能性道具
|
||
10 材料
|
||
11 碎片
|
||
*/
|
||
|
||
/*
|
||
type类型为1时,配置一下子类id
|
||
1.金币
|
||
2.钻石
|
||
3.角色账号经验
|
||
4.日活跃
|
||
5.周活跃
|
||
6.工会经验
|
||
7.手册经验
|
||
8.英雄熟练度
|
||
|
||
type类型为2时,配置一下子类id
|
||
1.自动打开
|
||
2.手动打开
|
||
|
||
type类型为7时,配置一下子类id
|
||
1.冲锋枪
|
||
2.散弹枪
|
||
3.狙击枪
|
||
4.火箭筒
|
||
5.激光枪
|
||
6.冰冻枪
|
||
7.火焰枪
|
||
|
||
type类型为9时,配置一下子类id
|
||
1.改名卡
|
||
2.喇叭
|
||
3.战队改名卡
|
||
|
||
type类型为10时,配置一下子类id
|
||
1.角色材料
|
||
2.科研材料
|
||
|
||
type类型为11时,配置一下子类id
|
||
1.角色碎片
|
||
2.枪械碎片
|
||
*/
|
||
const NONE_TYPE = 0;
|
||
const VIRTUAL_TYPE = 1;
|
||
const GIFT_PACKAGE_TYPE = 2;
|
||
const HERO_TYPE = 3;
|
||
const HERO_SKIN_TYPE = 4;
|
||
const HEAD_TYPE = 5;
|
||
const HEAD_FRAME_TYPE = 6;
|
||
const GUN_TYPE = 7;
|
||
const GUN_SKIN_TYPE = 8;
|
||
const FUNC_TYPE = 9;
|
||
const MATERIAL_TYPE = 10;
|
||
const FRAGMENT_TYPE = 11;
|
||
|
||
const FUNC_RENAME_CARD_SUBTYPE = 1;
|
||
|
||
const DAILY_BUY_LIMIT = 1;
|
||
const WEEKLY_BUY_LIMIT = 2;
|
||
const TOTAL_BUY_LIMIT = 3;
|
||
|
||
public static function get($id)
|
||
{
|
||
return getXVal(self::getMetaList(), $id, null);
|
||
}
|
||
|
||
public static function isType($meta, $type)
|
||
{
|
||
return $meta['type'] == $type;
|
||
}
|
||
|
||
public static function inTypes($meta, $types)
|
||
{
|
||
return in_array($meta['type'], $types);
|
||
}
|
||
|
||
public static function filter($cb)
|
||
{
|
||
foreach (self::getMetaList() as $meta) {
|
||
if (!$cb($meta)) {
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
|
||
public static function getPriceInfo($meta)
|
||
{
|
||
$info = array(
|
||
'item_id' => $meta['id'],
|
||
'price_info' => array(
|
||
'cost_list' => array(),
|
||
'discount_begin_time' => phpcommon\datetimeToTimestamp($meta['discount_begin']),
|
||
'discount_end_time' => phpcommon\datetimeToTimestamp($meta['discount_end'])
|
||
)
|
||
);
|
||
$discount = splitStr1($meta['discount']);
|
||
if ($meta['gold'] > 0) {
|
||
array_push($info['price_info']['cost_list'],
|
||
array(
|
||
array(
|
||
'item_id' => V_ITEM_GOLD,
|
||
'item_num' => $meta['gold'],
|
||
'discount' => count($discount) > 0 ? (int)$discount[0] : 0
|
||
)));
|
||
}
|
||
if ($meta['diamond'] > 0) {
|
||
array_push($info['price_info']['cost_list'],
|
||
array(
|
||
array(
|
||
'item_id' => V_ITEM_DIAMOND,
|
||
'item_num' => $meta['diamond'],
|
||
'discount' => count($discount) > 1 ? (int)$discount[1] : 0
|
||
)
|
||
));
|
||
}
|
||
return $info;
|
||
}
|
||
|
||
public static function getCostItems($priceInfo, $costItemId)
|
||
{
|
||
$costGroup = null;
|
||
array_walk($priceInfo['cost_list'], function ($val) use(&$costGroup, $costItemId) {
|
||
if ($costGroup) {
|
||
return;
|
||
}
|
||
if (count($val) > 0 && $val[0]['item_id'] == $costItemId) {
|
||
$costGroup = $val;
|
||
return;
|
||
}
|
||
});
|
||
if (!$costGroup) {
|
||
return null;
|
||
}
|
||
$costItems = array();
|
||
array_walk($costGroup, function ($val) use (&$costItems, $priceInfo) {
|
||
if ($val['discount'] > 0 &&
|
||
myself()->_getNowTime() >= $priceInfo['discount_begin_time'] &&
|
||
myself()->_getNowTime() <= $priceInfo['discount_end_time']
|
||
) {
|
||
array_push($costItems, array(
|
||
'item_id' => $val['item_id'],
|
||
'item_num' => (int)($val['item_num'] * ($priceInfo['discount'] / 100)),
|
||
));
|
||
} else {
|
||
array_push($costItems, array(
|
||
'item_id' => $val['item_id'],
|
||
'item_num' => $val['item_num'],
|
||
));
|
||
}
|
||
});
|
||
return $costItems;
|
||
}
|
||
|
||
public static function getUseCostItems($itemMeta)
|
||
{
|
||
$costItems = array();
|
||
foreach (splitStr2($itemMeta['use_cost']) as $arr) {
|
||
if (count($arr) >= 2) {
|
||
array_push($costItems, array(
|
||
'item_id' => $arr[0],
|
||
'item_num' => $arr[1]
|
||
));
|
||
}
|
||
}
|
||
return $costItems;
|
||
}
|
||
|
||
public static function isBagItem($type, $subType)
|
||
{
|
||
return in_array($type, array(
|
||
self::GIFT_PACKAGE_TYPE,
|
||
self::FUNC_TYPE,
|
||
self::MATERIAL_TYPE,
|
||
self::FRAGMENT_TYPE
|
||
));
|
||
}
|
||
|
||
protected static function getMetaList()
|
||
{
|
||
if (!self::$metaList) {
|
||
self::$metaList = getMetaTable('item@item.php');
|
||
}
|
||
return self::$metaList;
|
||
}
|
||
|
||
protected static $metaList;
|
||
|
||
}
|