As the game progresses with huge gain in resources shown above, I noticed the number formats are less than ideal, so I looked for the code that does this and later rework k_form() function to below code that formats to 3 digits with decimal and designated +/- prefixes that cleaned up the original code much.
\Lua state\SharedLua\string_functions.lua
Code: Select all
--jem e.g. k_form(234,"+","-")
function k_form(...) -- max 3digits with decimal
local count=#{...}
local arg={...}
local n=arg[1]
if count==0 return tostring(0) end -- why no arg?
local k=1000 -- thousand
local m=1000*k -- million
local b=1000*m -- billion
local a=math.abs(n) -- absolute value of number
local s=""
if(a==0) return tostring(0)
elseif(a>=b) s=format("%0.2fb",a/b)
elseif(a>=100*m) s=format("%0.0fm",a/m)
elseif(a>=10*m) s=format("%0.1fm",a/m)
elseif(a>=m) s=format("%0.2fm",a/m)
elseif(a>=100*k) s=format("%0.0fk",a/k)
elseif(a>=10*k) s=format("%0.1fk",a/k)
elseif(a>=k) s=format("%0.2fk",a/k)
elseif(a>0) s=format("%d",a)
end
if count==3
pos=arg[2] -- positive prefix, e.g. "+", can be blank ""
neg=arg[3] -- negative prefix, e.g. "-", can be blank ""
if n>0 s= pos .. s
elseif n<0 s= neg .. s end
end
return s
end
Code: Select all
function k_form(n)
if(n==0) return tostring(0) end
if(n>=100000)
return format("%0.0fk",n*.001)
end
if(n>=100)
if( math.fmod(n,1000)==0)
return format("%0.0fk",n*.001)
end
return format("%.1fk",n*.001)
end
if(n>=10)
return format("%.2fk",n*.001)
end
-- if(rval:sub(1,1)=="0") return rval:sub(2,-1) end
return format("%.3fk",n*.001)
end
Updating above function will change to this,
So I went to edit to
\Lua state\GUI\~GalaxyMap\@TopBarContents.lua
Original. Below are parts for Coin, Metal & Production and only Coin has k_form()
Code: Select all
local draw_coins = top_hover_fun | function ()
local empire = gui_player()
local credits in! empire
local income, taxes, trade, ship_up, planet_up = empire : income()
-- local income, taxes, trade, ship_up, planet_up in INIT.zero
local neg_credits = credits < 0
if neg_credits
credits*=-1
end
local neg_income = income < 0
if neg_income
income*=-1
end
if(credits>20000 and income > 500)
credits=k_form(credits)
income=k_form(income)
end
local income_str = format("(%s%s)",neg_income and '-' or '+', income)
if not empire.has_inhabited_planets
income_str=''
end
local cx,cy,cw,ch = top_bar.empire_coins("%s%s " .. income_str, neg_credits and '-' or '', credits)
.
.
.
--!! metal
local draw_metal = top_hover_fun | function ()
local empire=gui_player()
local el = element | top_bar.empire_metal | format( '%d (%s)' , empire.metal, plus_form | empire.mem_metal_production )
top_hover(top_bar.metalx,|) metal_hover_text | empire
end
-- production
local production_text = weak_memoizeNN | function(empire)
return format('(+%d)',empire.total_raw_hammer_production)
end
Code: Select all
local draw_coins = top_hover_fun | function ()
local empire = gui_player()
local credits in! empire
local myincome, taxes, trade, ship_up, planet_up = empire : income()
local income_str = "=" .. k_form(income,"+","-") ..")"
if not empire.has_inhabited_planets income_str='' end
local cx,cy,cw,ch = top_bar.empire_coins("%s " .. income_str, k_form(credits,"","-"))
.
.
.
--!! metal
local draw_metal = top_hover_fun | function ()
local empire=gui_player()
local el = element | top_bar.empire_metal | format( "%s (%s)" , k_form(empire.metal,"","-"), k_form(empire.mem_metal_production,"+","-"))
top_hover(top_bar.metalx,|) metal_hover_text | empire
end
-- production
local production_text = weak_memoizeNN | function(empire)
return format('(%s)',k_form(empire.total_raw_hammer_production,"+",""))
end
Jem