From d51e0e28b0c138633aea895a118d0374d09227f2 Mon Sep 17 00:00:00 2001 From: Arturas Norkus Date: Sat, 27 May 2017 23:15:39 +0300 Subject: [PATCH] update weather api --- embedded_happy_weather_api.lua | 120 ++++++++++++++++++++------------- thunder.lua | 1 - 2 files changed, 73 insertions(+), 48 deletions(-) diff --git a/embedded_happy_weather_api.lua b/embedded_happy_weather_api.lua index 29dcde0..e4b256a 100644 --- a/embedded_happy_weather_api.lua +++ b/embedded_happy_weather_api.lua @@ -12,6 +12,73 @@ happy_weather = {} local registered_weathers = {} local active_weathers = {} +------------------------------------ +-- Local helper / utility methods -- +------------------------------------ + +-- Adds weather to active_weathers table +local add_active_weather = function(weather_obj) + table.insert(active_weathers, weather_obj) +end + +-- Remove weather from active_weathers table +local remove_active_weather = function(weather_code) + if #active_weathers == 0 then + return + end + + for k, weather_ in ipairs(active_weathers) do + if weather_.code == weather_code then + table.remove(active_weathers, k) + return + end + end +end + +-- Returns active weather +local get_active_weather = function(weather_code) + if #active_weathers == 0 then + return nil + end + + for k, weather_ in ipairs(active_weathers) do + if weather_.code == weather_code then + return weather_ + end + end +end + +-- adds player to affected_players table +local add_player = function(affected_players, player) + table.insert(affected_players, player) +end + +-- remove player from affected_players table +local remove_player = function(affected_players, player_name) + if #affected_players == 0 then + return + end + + for k, player_ in ipairs(affected_players) do + if player_:get_player_name() == player_name then + table.remove(affected_players, k) + return + end + end +end + +local is_player_affected = function(affected_players, player_name) + if #affected_players == 0 then + return false + end + + for k, player_ in ipairs(affected_players) do + if player_:get_player_name() == player_name then + return true + end + end +end + --------------------------- -- Weather API functions -- --------------------------- @@ -63,58 +130,17 @@ happy_weather.request_to_end = function(weather_code) end end ------------------------------------- --- Local helper / utility methods -- ------------------------------------- - --- Adds weather to active_weathers table -local add_active_weather = function(weather_obj) - table.insert(active_weathers, weather_obj) -end - --- Remove weather from active_weathers table -local remove_active_weather = function(weather_code) +happy_weather.is_player_in_weather_area = function(player_name, weather_code) if #active_weathers == 0 then - return - end - - for k, weather_ in ipairs(active_weathers) do - if weather_.code == weather_code then - table.remove(active_weathers, k) - return - end - end -end - --- adds player to affected_players table -local add_player = function(affected_players, player) - table.insert(affected_players, player) -end - --- remove player from affected_players table -local remove_player = function(affected_players, player_name) - if #affected_players == 0 then - return - end - - for k, player_ in ipairs(affected_players) do - if player_:get_player_name() == player_name then - table.remove(affected_players, k) - return - end - end -end - -local is_player_affected = function(affected_players, player_name) - if #affected_players == 0 then return false end - for k, player_ in ipairs(affected_players) do - if player_:get_player_name() == player_name then - return true - end + local active_weather = get_active_weather(weather_code) + if active_weather == nil then + return false end + + return is_player_affected(active_weather.affected_players, player_name) end ----------------------------------------------------------------------------- diff --git a/thunder.lua b/thunder.lua index 90056ab..62a1953 100644 --- a/thunder.lua +++ b/thunder.lua @@ -27,7 +27,6 @@ local thunder_weather_next_check = 0 local thunder_weather_check_delay = 600 -- to avoid checks continuously thunder.is_starting = function(dtime) - checked = false thunder.next_strike = 0 thunder.min_delay = 5 thunder.max_delay = math.random(5, 45)