Few Bugs Fixed

This commit is contained in:
Cooldude2606
2018-06-07 14:59:12 +01:00
parent 5a40fe6649
commit ef8345216a
11 changed files with 55 additions and 60 deletions

View File

@@ -14,9 +14,9 @@ Discord: https://discord.gg/r6dC2uK
Manager = require("FactorioSoftmodManager")
Manager.setVerbose{
selfInit=true, -- called while the manager is being set up
moduleLoad=true, -- when a module is required by the manager
moduleInit=true, -- when and within the initation of a module
modulePost=true, -- when and within the post of a module
moduleLoad=false, -- when a module is required by the manager
moduleInit=false, -- when and within the initation of a module
modulePost=false, -- when and within the post of a module
moduleEnv=true, -- during module runtime, this is a global option set within each module for fine control
eventRegistered=false, -- when a module registers its event handlers
errorCaught=true, -- when an error is caught during runtime

View File

@@ -134,7 +134,7 @@
<h2><a href="#Events">Events</a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap><a href="#rank_change">rank_change</a></td>
<td class="name" nowrap><a href="#on_rank_change">on_rank_change</a></td>
<td class="summary">Called when there is a rank change for a user</td>
</tr>
</table>
@@ -554,8 +554,8 @@
<dl class="function">
<dt>
<a name = "rank_change"></a>
<strong>rank_change</strong>
<a name = "on_rank_change"></a>
<strong>on_rank_change</strong>
</dt>
<dd>
Called when there is a rank change for a user

View File

@@ -7,10 +7,6 @@
local Gui = {}
local Gui_data = {}
--- Stores all the on_player_joined_game event handlers for the guis
-- @table events
Gui.events = {join={},rank={}}
--- Used to set and get data about different guis
-- @usage Gui.data[location] -- returns the gui data for that gui location ex center
-- @usage Gui.data(location,gui_name,gui_data) -- adds gui data for a gui at a location
@@ -28,19 +24,11 @@ Gui.data = setmetatable({},{
end
})
-- loaded the different gui parts, each is its own module for ldoc reasons
local join, rank
Gui.center, join, rank = require(module_path..'/src/center')
table.insert(Gui.events.join,event) table.insert(Gui.events.rank,rank)
Gui.inputs, event = require(module_path..'/src/inputs')
table.insert(Gui.events.join,event) table.insert(Gui.events.rank,rank)
Gui.left, event = require(module_path..'/src/left')
table.insert(Gui.events.join,event) table.insert(Gui.events.rank,rank)
Gui.popup, event = require(module_path..'/src/popup')
table.insert(Gui.events.join,event) table.insert(Gui.events.rank,rank)
Gui.toolbar, event = require(module_path..'/src/toolbar')
table.insert(Gui.events.join,event) table.insert(Gui.events.rank,rank)
join, rank = nil, nil
Gui.center = require(module_path..'/src/center')
Gui.inputs = require(module_path..'/src/inputs')
Gui.left = require(module_path..'/src/left')
Gui.popup = require(module_path..'/src/popup')
Gui.toolbar = require(module_path..'/src/toolbar')
--- Add a white bar to any gui frame
-- @usage Gui.bar(frame,100)
@@ -74,20 +62,6 @@ function Gui.set_dropdown_index(dropdown,_item)
return dropdown
end
function Gui:on_init()
if loaded_modules.Server then verbose('ExpGamingCore.Server is installed; Loading server src') require(module_path..'/src/server') end
if loaded_modules.Ranking then
verbose('ExpGamingCore.Ranking is installed; Loading ranking src')
script.on_event('on_player_joined_game',function(event)
for _,callback in pairs(Gui.events.rank) do callback(event) end
end)
end
end
function Gui:on_post()
Gui.test = require(module_path..'/src/test')
end
--- Prams for Gui.cam_link
-- @table ParametersForCamLink
-- @field entity this is the entity that the camera will follow
@@ -152,7 +126,9 @@ function Gui.cam_link(data)
end
script.on_event('on_player_joined_game',function(event)
for _,callback in pairs(Gui.events.join) do callback(event) end
Gui.toolbar.on_player_joined_game(event)
Gui.popup.on_player_joined_game(event)
Gui.left.on_player_joined_game(event)
end)
script.on_event('on_tick', function(event)
@@ -183,4 +159,21 @@ script.on_event('on_player_respawned',function(event)
end
end)
function Gui:on_init()
if loaded_modules.Server then verbose('ExpGamingCore.Server is installed; Loading server src') require(module_path..'/src/server') end
if loaded_modules.Ranking then
verbose('ExpGamingCore.Ranking is installed; Loading ranking src')
script.on_event('on_rank_change',function(event)
Gui.toolbar.on_rank_change(event)
Gui.center.on_rank_change(event)
end)
end
end
function Gui:on_post()
Gui.test = require(module_path..'/src/test')
Gui.popup.load() Gui.popup.load = nil
end
return Gui

View File

@@ -201,6 +201,5 @@ script.on_event('on_gui_closed',function(event)
if event.element and event.element.valid then event.element.destroy() end
end)
-- when the player rank is changed it closses the center guis
-- second return is join event and third is rank change event
return center, nil, center.clear
center.on_rank_change = center.clear
return center

View File

@@ -371,6 +371,6 @@ function inputs.add_drop_down(name,items,index,callback)
end
-- second return is join event and third is rank change event
return inputs, nil, nil
return inputs
-- to see examples look at GuiParts/test.lua

View File

@@ -144,13 +144,13 @@ function left._left.toggle(event)
if not success then error(err)
elseif err == true then open = true
elseif global().over_ride_left_can_open then
if is_type(Ranking,'table') and Ranking._presets and Ranking._presets().meta.rank_count > 0 then
if is_type(Ranking,'table') and Ranking.meta.rank_count > 0 then
if Ranking.get_rank(player):allowed(_left.name) then open = true
else open = {gui.unauthorized} end
end
else open = err end
else
if is_type(Ranking,'table') and Ranking._presets and Ranking._presets().meta.rank_count > 0 then
if is_type(Ranking,'table') and Ranking.meta.rank_count > 0 then
if Ranking.get_rank(player):allowed(_left.name) then open = true
else open = {gui.unauthorized} end
end
@@ -164,8 +164,7 @@ function left._left.toggle(event)
elseif open ~= true then player_return({'gui.cant-open',open},defines.textcolor.crit,player) player.play_sound{path='utility/cannot_build'} end
end
-- second return is join event and third is rank change event
return left, function(event)
left.on_player_joined_game = function(event)
-- draws the left guis when a player first joins, fake_event is just because i am lazy
local player = Game.get_player(event)
local frames = Gui.data.left or {}
@@ -173,4 +172,6 @@ return left, function(event)
local fake_event = {player_index=player.index,element={name=name}}
left.open(fake_event)
end
end, nil
end
return left

View File

@@ -10,7 +10,7 @@
local popup = {}
popup._popup = {}
function popup._load()
function popup.load()
popup._popup.close = Gui.inputs.add{
type='button',
name='popup-close',
@@ -107,5 +107,6 @@ function popup._popup:add_left(obj)
self.left = Gui.left.add(obj)
end
-- second return is join event and third is rank change event
return popup, popup.flow, nil
popup.on_player_joined_game = popup.flow
return popup

View File

@@ -34,7 +34,7 @@ function toolbar.draw(player)
toolbar_frame.clear()
if not Gui.data.toolbar then return end
for name,button in pairs(Gui.data.toolbar) do
if is_type(Ranking,'table') and Ranking._presets and Ranking._presets().meta.rank_count > 0 then
if is_type(Ranking,'table') and Ranking.meta.rank_count > 0 then
local rank = Ranking.get_rank(player)
if rank:allowed(name) then
button:draw(toolbar_frame)
@@ -43,5 +43,6 @@ function toolbar.draw(player)
end
end
-- second return is join event and third is rank change event
return toolbar, toolbar.draw, toolbar.draw
toolbar.on_rank_change = toolbar.draw
toolbar.on_player_joined_game = toolbar.draw
return toolbar

View File

@@ -14,14 +14,14 @@ local module_verbose = false --true|false
local global = global{old={},preset={},last_change=nil}
--- Called when there is a rank change for a user
-- @event rank_change
-- @event on_rank_change
-- @field name the rank id
-- @field tick the tick which the event was raised on
-- @field player_index the player whos rank was changed
-- @field by_player_index the player who changed the rank, 0 means server
-- @field new_rank the name of the rank that was given
-- @field old_rank the name of the rank the player had
script.generate_event_name('rank_change')
script.generate_event_name('on_rank_change')
--- Outputs as a string all the ranks and the loaded order
-- @usage Ranking.output_ranks(player) -- prints to player
@@ -208,8 +208,8 @@ function Ranking.give_rank(player,rank,by_player,tick)
player.admin = rank.is_admin or false
player.spectator = rank.is_spectator or false
local by_player_index = by_player_name == 'server' and 0 or Game.get_player(by_player_name).index
script.raise_event(defines.events.rank_change,{
name=defines.events.rank_change,
script.raise_event(defines.events.on_rank_change,{
name=defines.events.on_rank_change,
tick=tick,
player_index=player.index,
by_player_index=by_player_index,

View File

@@ -167,7 +167,6 @@ function Server._thread_handler(event)
end
end)
end
script.on_event(defines.events,Server._thread_handler)
--[[ cant be used V
--- Adds a event handler to tell threads about events
@@ -370,7 +369,7 @@ function Server._thread:resolve(...)
local _return = false
-- checks if the resolve haddler is still present
if is_type(self._resolve,'function') then
local sandbox, success, err = Manager.sandbox(self._resolve,thread._env,self,...)
local sandbox, success, err = Manager.sandbox(self._resolve,self._env,self,...)
if success then
-- if it was successful then it will attemp to call the success handler
if is_type(self._success,'function') then
@@ -462,6 +461,7 @@ script.on_event(-2,function(event)
end)
function Server:on_init()
for name,id in pairs(defines.events) do if not script.get_event_handler(id) then script.on_event(id,Server._thread_handler) end end
if loaded_modules.commands then verbose('ExpGamingCore.Commands is installed; Loading commands src') require(module_path..'/src/commands') end
end

View File

@@ -37,7 +37,7 @@ if Sync.add_to_gui then
end
-- adds a discord emit for rank chaning
script.on_event('rank_change',function(event)
script.on_event('on_rank_change',function(event)
local rank = Ranking.get_rank(event.new_rank)
local player = Game.get_player(event)
local by_player_name = Game.get_player(event.by_player_index) or '<server>'