源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

842 rivejä
22 KiB

WordManager = WordManager or {}
local WordManager = WordManager
WordManager.goods_color_list_dark = {
[0] = ColorUtil.GRAY_DARK,
[1] = ColorUtil.GREEN_DARK,
[2] = ColorUtil.BLUE_DARK,
[3] = ColorUtil.PURPLE_DARK,
[4] = ColorUtil.ORANGE_DARK,
[5] = ColorUtil.RED_DARK,--红色品质
[6] = ColorUtil.PINK_DARK,--粉色品质
[7] = ColorUtil.YELLOW_DARK,--彩色品质(用图片蒙版)
[8] = ColorUtil.GREEN_DARK_CH,--传闻聊天深绿
}
WordManager.partner_color_list = {
[1] = ColorUtil.WHITE,
[2] = ColorUtil.GREEN,
[3] = ColorUtil.BLUE,
[4] = ColorUtil.PURPLE,
[5] = ColorUtil.ORANGE,
}
-- 不同价格类型对应的货币goodsID表
WordManager.price_type_id = {
[1] = 100000, -- 彩钻
[2] = 100001, -- 红钻
[3] = 100002, -- 交易券
[4] = 100003, -- 名望券
}
WordManager.RomanNumerals =
{
{"I","II","III","IV","V","VI","VII","VIII","IX"},--1~9
{"X","XX","XXX","XL","L","LX","LXX","LXXX","XC"},--10~90
{"C","CC","CCC","CD","D","DC","DCC","DCCC","CM"},--100~900
}
function WordManager.GetGoodsColor(color)
return WordManager.goods_color_list_dark[color] or WordManager.goods_color_list_dark[0]
end
--传闻之前跟物品是两套颜色的,现在统一了,先保留接口,避免策划需求又变更
function WordManager.GetChuanwenColor(color)
return WordManager.goods_color_list_dark[color] or WordManager.goods_color_list_dark[0]
end
function WordManager.GetPartnerColor(color)
return WordManager.partner_color_list[color] or WordManager.partner_color_list[0]
end
function WordManager.ChangeToMainUIChatColor( str )
--主界面和里边的聊天颜色要不同- -。 深浅底,这截中间做法出问题的话,就去源头传来的COLOR@1 分成两个文本存吧。
local str = str or ""
str = string.gsub(str, ColorUtil.GREEN_DARK, ColorUtil.GREEN_DARK)
str = string.gsub(str, ColorUtil.GRAY_DARK, ColorUtil.GRAY_DARK)
str = string.gsub(str, ColorUtil.GOLD_DARK, ColorUtil.GOLD_DARK)
return str
end
function WordManager:GetCareerName(career)
for _,v in pairs(Config.Career) do
if tonumber(career) == tonumber(v.career_id) then
return v.career_name
end
end
return ""
end
function WordManager:GetRoleCareerName(career,turn)
local ret = "通用"
local cfg = Config.ConfigCarrerName[career.."@"..turn]
if cfg then
ret = cfg.name
elseif career ~= 0 then
for index,data in pairs(Config.Career) do
if data.career_id == career then
ret = Trim(data.career_name)
break
end
end
end
return ret
end
-- level:人物等级,turn:人物转生,symbol:是否需要"等级"(非巅峰情况),symbol:是否需要"巅峰"(巅峰情况)
function WordManager:GetRoleLevel(level,turn,symbol,symbol_top)
if not level then
logWarn("WordManager:GetRoleLevel=>level is nil")
level = 0
end
if not turn then
logWarn("WordManager:GetRoleLevel=>turn is nil")
turn = 0
end
level = tonumber(level)
turn = tonumber(turn)
if level and turn and level >= MainRoleVo.TOP_LEVEL and turn >= 4 then
return symbol_top and level-MainRoleVo.TOP_LEVEL or (level-MainRoleVo.TOP_LEVEL)
else
return symbol and ("lv." .. level) or level
end
end
-- level:人物等级,turn:人物转生,symbol:是否需要"等级"(非巅峰情况),symbol:是否需要"巅峰"(巅峰情况)
function WordManager:GetRoleLevel2(level,turn,symbol,symbol_top)
if not level then
logWarn("WordManager:GetRoleLevel=>level is nil")
level = 0
end
if not turn then
logWarn("WordManager:GetRoleLevel=>turn is nil")
turn = 0
end
level = tonumber(level)
turn = tonumber(turn)
if level and turn and level >= MainRoleVo.TOP_LEVEL and turn >= 4 then
return symbol_top and "传奇"..(level-MainRoleVo.TOP_LEVEL) or level-MainRoleVo.TOP_LEVEL
else
return symbol and (level.."") or level
end
end
function WordManager:RoleLevelIsTop(level,turn)
if not level then
logWarn("WordManager:GetRoleLevel=>level is nil")
level = 0
end
if not turn then
logWarn("WordManager:GetRoleLevel=>turn is nil")
turn = 0
end
if level >= MainRoleVo.TOP_LEVEL and turn >= 4 then
return true
else
return false
end
end
function WordManager:changeWords(text)
local parseTypeDic = {}
if text==nil or text=="" then
return text
end
text = Trim(text)
parseTypeDic["me"]="<color='#ffef67'>" .. RoleManager.Instance.mainRoleInfo.name .. "</color>"
parseTypeDic["name"]="<color='#ffef67'>" .. RoleManager.Instance.mainRoleInfo.name .. "</color>"
parseTypeDic["sex"]=RoleManager.Instance.mainRoleInfo.sex
parseTypeDic["realm"]=RoleManager.Instance.mainRoleInfo.realm
parseTypeDic["career"]=RoleManager.Instance.mainRoleInfo.career
-- parseTypeDic["find"]=0
-- parseTypeDic["color"]=0
local function replaceFunc(...)
local arg = {...}
local type=arg[1]
local values= Split(arg[2], ":")
if parseTypeDic[type] == nil then
return ""
-- elseif type=="find" then
-- return "%s" .. Join(values, "|") .. "%s"
-- elseif type=="color" then
-- local list = {}
-- for i=2,#values do
-- list[i - 1] = values[i]
-- end
-- local str= Join(list , ":")
-- return string.format("<font color='%s'>%s</font>", values[1] , str)
else
if #values > 1 then
return values[parseTypeDic[type]]
else
return parseTypeDic[type]
end
end
return ""
end
local result = string.gsub(text, "%[(.*)%]([^%[]*)%[/%1%]", replaceFunc)
--print("parseTaskStrResult:" .. result)
return result
end
--160 坐骑系统
--161 翅膀
--165 宠物
--168 法宝
--427 神格系统
--430 星灵系统
--440 降神
--441 图鉴系统
--物品属性对应关系,module 对应功能id
function WordManager:GetProperties(id,module_id,big_space)
id = tonumber(id)
module_id = tonumber(module_id)
local cfg = Config.ConfigItemAttr.Normal[id]
if cfg == nil then
print("找不到对应的属性配置 ",id)
return ""
end
if module_id and Config.ConfigItemAttr.SpecialAttr[id] then
local name = Config.ConfigItemAttr.SpecialAttr[id][module_id]
if name then
return name
end
end
return cfg.name
end
function WordManager:GetPropertyValue(id,value)
local cfg = Config.ConfigItemAttr.Normal[id]
if cfg == nil then
cfg = {name = "", kind = 1, symbol = 1}
end
local mark = cfg.kind == 2 and "%" or cfg.kind == 3 and "ms" or ""
if cfg.kind == 2 then
value = tonumber(value) / 100
elseif cfg.kind == 1 then
value = math.floor(tonumber(value) + 0.5)
end
local sym = cfg.symbol == 1 and "+" or "-"
value = value - value % 0.01 --保留小数点后两位
return value .. mark, sym
end
--获取物品属性对应信息[str_format格式化 "{0}名字 {1}符号{2}数值"]
function WordManager:GetPropertyInfo(id, value, color, str_format,module_id)
id = tonumber(id)
value = tonumber(value)
local value_color = color or ColorUtil.GREEN
local name = self:GetProperties(id,module_id)
local value, symbol = self:GetPropertyValue(id, value)
local str = "{0} {1}{2}"
if str_format then
if color then
str = Language.substitute(str_format, name, color, symbol, value)
else
str = Language.substitute(str_format, name, symbol, value)
end
else
if value_color then
str = "{0} <color={1}>{2}{3}</color>"
end
str = Language.substitute(str, name, value_color, symbol, value)
end
return str, name, symbol, value
end
-- 属性 是属于高级属性
function WordManager:GetAttrIsSpecial(attr_id)
local t_id = attr_id or 0
t_id = tonumber(attr_id)
return t_id >= 9 and t_id ~= 15 and t_id ~= 16 --15固伤, 16固定减伤
end
--获取五行描述
function WordManager.GetFiveElementStr(value)
if value == 2 then
return "(光)"
elseif value == 3 then
return "(暗)"
elseif value == 4 then
return "(水)"
elseif value == 5 then
return "(火)"
elseif value == 6 then
return "(风)"
end
end
--物品属性对应关系,1~57的物品属性
function WordManager:GetExtraProperties(id)
local str = ""
if id == 7 then
str = "体质成长"
elseif id == 8 then
str = "敏捷成长"
elseif id == 9 then
str = "力量成长"
elseif id == 10 then
str = "灵巧成长"
end
return str
end
--通过格子位置,或许装备格子类型描述
function WordManager:GetEquipStyleStr(cell)
return Config.ConfigEquipShow[cell] and Config.ConfigEquipShow[cell].name or ""
end
--通过装备颜色获取装备前缀描述
function WordManager:GetEquipPrefix(prefix,symbol)
local desc = ""
if prefix == 0 then --
desc = ""
elseif prefix == 1 then
desc = "[普通]"
elseif prefix == 2 then
desc = "[优秀]"
elseif prefix == 3 then
desc = "[精良]"
elseif prefix == 4 then
desc = "[稀有]"
elseif prefix == 5 then
desc = "[卓越]"
elseif prefix == 6 then
desc = "[完美]"
elseif prefix == 7 then
desc = "[史诗]"
elseif prefix == 8 then
desc = "[传说]"
elseif prefix == 9 then
desc = "[远古]"
elseif prefix == 10 then
desc = "[不朽]"
elseif prefix == 11 then
desc = "[圣物]"
elseif prefix == 12 then
desc = "[神赐]"
end
if desc ~= "" and symbol then
desc = string.sub(desc,2,string.len(desc) - 1)
if type(symbol) == "string" then
desc = desc..symbol
end
end
return desc
end
--通过品质获取伙伴基础属性描述
function WordManager:GetPartnerPropDescByQuality(quality)
local prefix = ""
if quality == 1 then
prefix = "[普通]"
elseif quality == 2 then
prefix = "[良好]"
elseif quality == 3 then
prefix = "[优秀]"
elseif quality == 4 then
prefix = "[卓越]"
elseif quality == 5 then
prefix = "[完美]"
end
return prefix
end
--伙伴个性描述
function WordManager:GetPartnerPersonality(personality)
local prefix = ""
if personality == 1 then
prefix = "威严"
elseif personality == 2 then
prefix = "厉害"
elseif personality == 3 then
prefix = "简答"
elseif personality == 4 then
prefix = "威严"
elseif personality == 5 then
prefix = "威严"
end
return prefix
end
function WordManager:GetWingStepNum(type_id)
local step = Config.Twing[type_id] and Config.Twing[type_id].grade or 0
return step .. ""
end
function WordManager:GetEquipStepNum(id)
local step = Config.Equipattr[id] and Config.Equipattr[id].stage or 0
return step .. ""
end
function WordManager:GetEquipStepOnlyNum( id )
local step = Config.Equipattr[id] and Config.Equipattr[id].stage or 0
return step
end
--获取通用uiComponent_asset资源的游戏币图标资源名称
--[[
1: 彩钻
2: 红钻
3: 交易券
4: 名望券(各种战场荣誉)
5: 经验值
]]
function WordManager:GetCommonMoneyIcon(price_type)
local source = "ui_momey_icon_1"
local asset = "uiComponent_asset"
if price_type == 1 then
source = "ui_momey_icon_1"
elseif price_type == 2 then
source = "ui_momey_icon_2"
elseif price_type == 3 then
source = "ui_momey_icon_3"
elseif price_type == 4 then
source = "ui_momey_icon_4"
elseif price_type == 5 then
source = "ui_momey_icon_5"
elseif price_type == 11 then
source = "ui_momey_icon_11"
elseif price_type == 12 then
source = "ui_momey_icon_12"
elseif price_type == 13 then
source = "ui_momey_icon_13"
elseif price_type == 19 then
source = "ui_momey_icon_6"
elseif price_type == EmpowerConst.EmpowerMoneyId then
source = "ui_momey_icon_emPower"
elseif price_type == GuildModel.GuildContributeType then
source = "ui_momey_icon_8"
else
source = "ui_momey_icon_1"
end
return asset, source
end
--获取通用common_asset资源的游戏币描述字符串
function WordManager:GetCommonMoneyStr(price_type)
local str = ""
if price_type then
price_type = tonumber(price_type)
end
if price_type == 1 then
str = "彩钻"
elseif price_type == 2 then
str = "红钻"
elseif price_type == 3 then
str = "金币"
elseif price_type == 4 then
str = "社团贡献"
elseif price_type == 5 then
str = "经验"
elseif price_type == 6 then
str = "鲜花值"
elseif price_type == 7 then
str = "花香值"
elseif price_type == 8 then
str = "社团资金"
elseif price_type == 9 then
str = "时装精华"
elseif price_type == 10 then
str = "魂珠经验"
elseif price_type == 11 then
str = "纹章精华"
elseif price_type == 16 then
str = "竞技荣耀值"
elseif price_type == 17 then
str = "社团成长值"
else
str = ""
end
return str
end
-- 通过价格类型获取价格类型对应的货币goodsid
function WordManager:GetPriceTypeId(price_type)
if not price_type then return nil end
return WordManager.price_type_id[price_type]
end
--获取货币的图文混排标签字符串
function WordManager:GetMoneyFaceStr( price_type )
if (not price_type) or (not Config.ConfigNotNormalGoods[price_type]) then return "" end
local id = Config.ConfigNotNormalGoods[price_type].face_id
return id and ("<sprite="..id..">") or ""
end
--是否有足够的消耗材料
--[[
cost_type:
0: 物品
1: 彩钻
2: 绑定彩钻
3: 金币
4: 社团币
5: 经验
6: 荣誉1
7: 荣誉2
num:消耗数量
type_id:真实物品类型id,数值物品为nil
]]
function WordManager:HaveEnoughCostOld(cost_type, num, type_id)
local enough = false
local cost_type = cost_type or 0
local num = tonumber(num) or 0
local desc = ""
if cost_type == 0 then
if type_id then
local bag_num = GoodsModel:getInstance():GetTypeGoodsNum(type_id)
if bag_num >= num then
enough = true
else
desc = "物品不足"
end
end
elseif cost_type == 1 then --彩钻
if RoleManager.Instance.mainRoleInfo:GetRealJin() >= num then
enough = true
else
desc = "彩钻不足"
end
elseif cost_type == 2 then --红钻
if RoleManager.Instance.mainRoleInfo.jinLock >= num then
enough = true
else
desc = "红钻不足"
end
elseif cost_type == 3 then --交易券
if RoleManager.Instance.mainRoleInfo.tong >= num then
enough = true
else
desc = "金币不足"
end
elseif cost_type == 4 then
end
return enough, desc
end
--[[
标签选择时文字颜色改变
index: 选中的标签索引
tab_list: 存放标签对象列表
tab_txt_list: 存放标签Text组件列表
tab_outline_list: 存放标签OutLine组件列表
content: 标签文字内容列表
]]--
function WordManager:SetTabColor(index,tab_list,tab_txt_list,tab_outline_list,content)
for i=1,#tab_list do
if i == index then
tab_list[i].transform:SetAsLastSibling()
tab_list[i]:GetComponent("Toggle").isOn = true
tab_txt_list[i].text = "<color=#F3EBE7FF>"..content[i].."</color>"
if tab_outline_list[i] then
tab_outline_list[i].effectColor = Color(146/255,71/255,35/255,1)
end
else
tab_list[i].transform:SetAsFirstSibling()
tab_list[i]:GetComponent("Toggle").isOn = false
tab_txt_list[i].text = "<color=#a0b4d5>"..content[i].."</color>"
if tab_outline_list[i] then
tab_outline_list[i].effectColor = Color(67/255,44/255,33/255,1)
end
end
end
end
function WordManager:GetGoodsTypeStr(type, subtype)
local str = "通用"
local tbl = {
[1] = "通用",
[2] = "装备",
[3] = "消耗",
[4] = "碎片",
[5] = "礼包",
}
if type and subtype then
local key = tostring(type).."@"..tostring(subtype)
if Config.GoodsSubtype[key] and Config.GoodsSubtype[key].sublabel_id then
local id = Config.GoodsSubtype[key].sublabel_id
str = tbl[id] or "通用"
else
print("没有找到该道具类型 type = ", type, " subtype = ", subtype)
end
else
print("没有找到该道具类型 type = ", type, " subtype = ", subtype)
end
return str
end
function WordManager:GetSkillTypeStr(type)
local tbl = {
[1] = "主动技能",
[2] = "被动技能",
[3] = "辅助",
[4] = "永久增益",
}
return tbl[type] or ""
end
--show_decimal: 显示小数点
--is_exp: 是否是经验字体exp_font需要统一格式
function WordManager:ConvertNum(num, show_decimal, is_exp)
num = tonumber(num)
show_decimal = show_decimal == nil and true or show_decimal
if num <= 99999 then
return num
elseif num >= 100000 and num < 100000000 then
local num = num/10000
if show_decimal then
local int_count,dec_count = self:GetNumberCount(num)
if int_count + dec_count >4 then
local temp_num = 1 / (10 ^ (4-int_count))
temp_num = temp_num < 0.1 and 0.1 or temp_num
num = num-num%temp_num
else
num = num-num%0.1
end
else
num = math.floor(num)
end
if is_exp then
num = string.gsub(num,"%.","d")
return string.format("%sw",num)
else
return string.format("%s万", num)
end
elseif num >= 100000000 and num < 10000000000000 then
local num = num/100000000
if show_decimal then
local int_count,dec_count = self:GetNumberCount(num)
if int_count + dec_count >4 then
local temp_num = 1 / (10 ^ (4-int_count))
temp_num = temp_num < 0.1 and 0.1 or temp_num
num = num-num%temp_num
else
num = num-num%0.1
end
else
num = math.floor(num)
end
-- num = show_decimal and num-num%0.1 or math.floor(num)
if is_exp then
num = string.gsub(num,"%.","d")
return string.format("%sy",num)
else
return string.format("%s亿", num)
end
else
local num = num/1000000000000
if show_decimal then
local int_count,dec_count = self:GetNumberCount(num)
if int_count + dec_count >4 then
local temp_num = 1 / (10 ^ (4-int_count))
temp_num = temp_num < 0.1 and 0.1 or temp_num
num = num-num%temp_num
else
num = num-num%0.1
end
else
num = math.floor(num)
end
if is_exp then
num = string.gsub(num,"%.","d")
return string.format("%sY",num)
else
return string.format("%s万亿", num)
end
end
end
--获取一个数字的数字个数
function WordManager:GetNumberCount( num )
num = tonumber(num)
local int = (num - num % 1)
local dec = num % 1
dec = dec == 0 and "" or dec
local int_count = string.len(tostring(int))
local dec_count = string.len(tostring(dec))
return int_count, dec_count
end
function WordManager:ConvertNum1(num, show_decimal)
num = tonumber(num)
show_decimal = show_decimal == nil and true or show_decimal
if num <= 9999 then
return num
elseif num >= 10000 and num < 100000000 then
return show_decimal and string.format("%.1f万",(num / 10000)) or string.format("%d万", math.floor(num/10000))
elseif num >= 100000000 and num < 1000000000000 then
return show_decimal and string.format("%.1f亿",(num / 100000000)) or string.format("%d亿", math.floor(num / 100000000))
else
return show_decimal and string.format("%.1f万亿",(num / 1000000000000)) or string.format("%d万亿", math.floor(num / 1000000000000))
end
end
function WordManager:GetExpUnit(num)
local unit = ""
if num == "1" then
unit = ""
elseif num == "2" then
unit = "亿"
end
return unit
end
function WordManager:GetWeekStr( week )
local tb = {
[0] = "周日",
[1] = "周一",
[2] = "周二",
[3] = "周三",
[4] = "周四",
[5] = "周五",
[6] = "周六",
[7] = "周日",
}
return tb[tonumber(week)]
end
function WordManager:GetWeekStr2( week )
local tb = {
[1] = "星期日",
[2] = "星期一",
[3] = "星期二",
[4] = "星期三",
[5] = "星期四",
[6] = "星期五",
[7] = "星期六",
}
return tb[tonumber(week)]
end
function WordManager:GetWeekStr3( week )
local tb = {
[1] = "星期一",
[2] = "星期二",
[3] = "星期三",
[4] = "星期四",
[5] = "星期五",
[6] = "星期六",
[7] = "星期日",
}
return tb[tonumber(week)]
end
function WordManager:ShowGetRewardGoodsTips(goods_list)
for i,v in pairs(goods_list) do
local goods_Id, lock = GoodsModel:getInstance():GetMappingTypeId(v.style, v.typeId)
local gvo = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods_Id)
if gvo then
local name = gvo.goods_name
str = "获得 <color="..WordManager.GetGoodsColor(gvo.color)..">" .. name .. "x" .. v.count .. "</color>"
Message.show(str)
end
end
end
function WordManager:GetJewelTypeStr(type)
local tbl = {
[1] = "攻击类",
[2] = "生命类",
[3] = "破甲类",
[4] = "防御类",
[5] = "命中类",
[6] = "闪避类",
[7] = "暴击类",
[8] = "韧性类",
}
return tbl[type] or ""
end
--得到1~999的罗马数字
function WordManager:GetRomanNumber(num)
if num < 1 or num > 999 then
return
end
local str = tostring(num)
local rt = ""
local tbl = {}
for c in string.gmatch(str,"%d") do
table.insert(tbl,1,tonumber(c))
end
for i, v in ipairs(tbl) do
if v ~= 0 then
rt = WordManager.RomanNumerals[i][v]..rt
end
end
return rt
end
--判断消耗品是否充足
function WordManager:HaveEnoughCost(list)
local enough = false
local cost_type = tonumber(list[1]) or 0
local type_id = tonumber(list[2])
local num = tonumber(list[3]) or 0
local self_num = 0
if cost_type == 0 then --物品
if type_id then
self_num = GoodsModel:getInstance():GetTypeGoodsNum(type_id)
end
elseif cost_type == 1 then --彩钻
self_num = RoleManager.Instance.mainRoleInfo:GetRealJin()
elseif cost_type == 2 then --绑定彩钻
self_num = RoleManager.Instance.mainRoleInfo.jinLock
elseif cost_type == 3 then --货币
self_num = RoleManager.Instance.mainRoleInfo.tong
-- elseif cost_type == 4 then --社团币
elseif cost_type == 4 then --名望券
self_num = RoleManager.Instance.mainRoleInfo.honor
elseif cost_type == 255 then --特殊积分
self_num = GoodsModel:getInstance():GetSpecialScore(type_id)
end
if self_num >= num then
enough = true
end
return enough, self_num
end
--给字符串加颜色
function WordManager:AddColorToString( content,color,mask_tag )
content = content or ""
color = color or "ffffff"
if mask_tag then
return "<color=" .. color .. ">" .. content .. "</color>"
else
return "<color=#" .. color .. ">" .. content .. "</color>"
end
end
--数字转汉字
function WordManager:getHanZiNumber(id)
if not id then
id = 0
end
local arr = {"","","","","","","","","","","","十一","十二","十三","十四","十五","十六","十七","十八","十九","二十"}
local str = arr[id + 1]
if id and id > 20 and id < 100 then
local ones_place = id % 10
local tens_place = math.floor(id / 10)
ten_str = arr[tens_place + 1] .. arr[11]
ones_str = ones_place == 0 and "" or arr[ones_place + 1]
str = ten_str .. ones_str
end
return str
end