--추가 기능 이름 (대문자)
local addonName = "AUTOSAVEMONEY";
local addonNameLower = string.lower(addonName);
--제작자 이름
local author = "CHICORI";

--추가 기능에서 사용하는 공간을 만들었습니다. 다음 파일의 범위에서 전역 변수 g 액세스 가능
_G["ADDONS"] = _G["ADDONS"] or {};
_G["ADDONS"][author] = _G["ADDONS"][author] or {};
_G["ADDONS"][author][addonName] = _G["ADDONS"][author][addonName] or {};
local g = _G["ADDONS"][author][addonName];

--라이브러리 로드
local acutil = require('acutil');

--lua 읽을 때 메시지
CHAT_SYSTEM(string.format("%s 1.0.3 실행~'ㅅ')~", addonName));

function AUTOSAVEMONEY_SAVESETTINGS()
	local cid = session.GetMySession():GetCID();
	g.settingsFileLoc = string.format("../addons/%s/%s.json", addonNameLower, cid);
	acutil.saveJSON(g.settingsFileLoc, g.settings);
end

function FIRSTLOAD_SETTINGS()
--기본 설정
	g.settings = {
		enable = true,
		automode = false,
		thresholdPrice = 100000
		};
	AUTOSAVEMONEY_SAVESETTINGS();
	local firstMsg = info.GetName(session.GetMyHandle()) .. "：[autosave money]의 시작입니다.{nl}기본 금액 100,000실버를 세팅했습니다.{nl}[/asm 실버숫자]에서 캐릭터마다 설정을 할 수 있습니다."
	CHAT_SYSTEM(firstMsg);
end

function AUTOSAVEMONEY_ON_INIT(addon, frame)
--설정 파일 저장 위치
	local cid = session.GetMySession():GetCID();
	g.settingsFileLoc = string.format("../addons/%s/%s.json", addonNameLower, cid);

	g.addon = addon;
	g.frame = frame;

	acutil.slashCommand("/"..addonNameLower, AUTOSAVEMONEY_PROCESS_COMMAND);
	acutil.slashCommand("/asm", AUTOSAVEMONEY_PROCESS_COMMAND);

	local t, err = acutil.loadJSON(g.settingsFileLoc, g.settings);
		if err then
			FIRSTLOAD_SETTINGS()
		else
			acutil.loadJSON(g.settingsFileLoc, g.settings);
			g.settings = t;
			AUTOSAVEMONEY_SAVESETTINGS();
		end
		g.loaded = true;

	addon:RegisterMsg('OPEN_DLG_ACCOUNTWAREHOUSE', 'AUTOSAVEMONEYSET');
--test:CHAT_SYSTEM(info.GetName(session.GetMyHandle()) .. ":" .. cid .. "/" .. g.settings.thresholdPrice)
end

function AUTOSAVEMONEY_PROCESS_COMMAND(command)
local cmd = "";

	if #command > 0 then
		cmd = table.remove(command, 1);
	else
		local msg = "금액 설정：[/asm 실버숫자]"
		return ui.MsgBox(msg,"","Nope")
	end

	if cmd == "on" then
	--유효
		g.settings.enable = true;
		CHAT_SYSTEM(string.format("[%s] is enable", addonName));
		AUTOSAVEMONEY_SAVESETTINGS();
		return;
	elseif cmd == "off" then
	--무효
		g.settings.enable = false;
		CHAT_SYSTEM(string.format("[%s] is disable", addonName));
		AUTOSAVEMONEY_SAVESETTINGS();
		return;
	elseif cmd == "autoon" then
		g.settings.automode = true;
		CHAT_SYSTEM(string.format("[%s] is autopayment on", addonName));
		AUTOSAVEMONEY_SAVESETTINGS();
		return;
	elseif cmd == "autooff" then
		g.settings.automode = false;
		CHAT_SYSTEM(string.format("[%s] is autopayment on", addonName));
		AUTOSAVEMONEY_SAVESETTINGS();
		return;
	elseif tonumber(cmd) >= 1000 then
	--금액 가격
		g.settings.thresholdPrice = cmd;
		CHAT_SYSTEM(string.format("[%s]설정 %s:금액 가격%s%s", addonName, info.GetName(session.GetMyHandle()), GET_MONEY_IMG(14) ,GetCommaedText(cmd)));
		AUTOSAVEMONEY_SAVESETTINGS();
		return;
	elseif tonumber(cmd) >= 1 then
		ui.SysMsg("1,000단위로 지정하십시오")
		return;
	end
  CHAT_SYSTEM(string.format("[%s] Invalid Command", addonName));
end


function AUTOSAVEMONEYSET(frame)
	local inputPrice = GET_TOTAL_MONEY();
	local thresholdPrice   = g.settings.thresholdPrice;

	if g.settings.enable == false then
		return;
	end

	if inputPrice >= (thresholdPrice + 1000) then
		local setPrice = math.floor(inputPrice/1000-(thresholdPrice/1000))*1000;
		local frame = ui.GetFrame("accountwarehouse");
		local gBox = GET_CHILD(frame, "gbox");
		local find_name = GET_CHILD(gBox, "moneyInput", "ui::CEditControl");
		find_name:SetText(setPrice);
		
--		local automodeFlg = g.settings.automode;
--		if automodeFlg == true then
--			ACCOUNT_WAREHOUSE_DEPOSIT();
--		end
	end	

end