game2005api/webapp/mt/Item.php
2021-12-24 14:47:20 +08:00

207 lines
5.4 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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;
}