mirror of
				https://gitlab.com/rautars/weather_pack.git
				synced 2025-11-04 02:15:26 +01:00 
			
		
		
		
	update weather api
This commit is contained in:
		@@ -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
 | 
			
		||||
 | 
			
		||||
-----------------------------------------------------------------------------
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user