2024-04-29 22:14:22 +03:00
dofile_once ( " mods/quant.ew/NoitaPatcher/load.lua " )
local np = require ( " noitapatcher " )
dofile_once ( " data/scripts/lib/utilities.lua " )
np.InstallShootProjectileFiredCallbacks ( )
np.EnableGameSimulatePausing ( false )
np.InstallDamageDetailsPatch ( )
np.SilenceLogs ( " Warning - streaming didn \' t find any chunks it could stream away... \n " )
local player_fns = dofile_once ( " mods/quant.ew/files/src/player_fns.lua " )
local net = dofile_once ( " mods/quant.ew/files/src/net.lua " )
local ctx = dofile_once ( " mods/quant.ew/files/src/ctx.lua " )
2024-05-03 23:38:40 +03:00
local pretty = dofile_once ( " mods/quant.ew/files/lib/pretty_print.lua " )
2024-05-07 23:46:15 +03:00
local perk_fns = dofile_once ( " mods/quant.ew/files/src/perk_fns.lua " )
2024-05-08 20:33:41 +03:00
local enemy_sync = dofile_once ( " mods/quant.ew/files/src/enemy_sync.lua " )
2024-04-29 22:14:22 +03:00
2024-05-02 20:24:27 +03:00
function OnProjectileFired ( shooter_id , projectile_id , rng , position_x , position_y , target_x , target_y , send_message ,
unknown1 , multicast_index , unknown3 )
end
function OnProjectileFiredPost ( shooter_id , projectile_id , rng , position_x , position_y , target_x , target_y , send_message ,
unknown1 , multicast_index , unknown3 )
end
function OnPausedChanged ( paused , is_wand_pickup )
local players = EntityGetWithTag ( " player_unit " ) or { }
if ( players [ 1 ] ) then
np.RegisterPlayerEntityId ( players [ 1 ] )
local inventory_gui = EntityGetFirstComponentIncludingDisabled ( players [ 1 ] , " InventoryGuiComponent " )
local controls_component = EntityGetFirstComponentIncludingDisabled ( players [ 1 ] , " ControlsComponent " )
if ( paused ) then
--EntitySetComponentIsEnabled(players[1], inventory_gui, false)
np.EnableInventoryGuiUpdate ( false )
np.EnablePlayerItemPickUpper ( false )
ComponentSetValue2 ( controls_component , " enabled " , false )
else
--EntitySetComponentIsEnabled(players[1], inventory_gui, true)
np.EnableInventoryGuiUpdate ( true )
np.EnablePlayerItemPickUpper ( true )
ComponentSetValue2 ( controls_component , " enabled " , true )
end
end
end
2024-04-29 22:14:22 +03:00
-- all functions below are optional and can be left out
--[[
function OnModPreInit ( )
print ( " Mod - OnModPreInit() " ) -- First this is called for all mods
end
function OnModInit ( )
print ( " Mod - OnModInit() " ) -- After that this is called for all mods
end
function OnModPostInit ( )
print ( " Mod - OnModPostInit() " ) -- Then this is called for all mods
end
function OnWorldPostUpdate ( ) -- This is called every time the game has finished updating the world
GamePrint ( " Post-update hook " .. tostring ( GameGetFrameNum ( ) ) )
end
] ] --
function OnWorldInitialized ( ) -- This is called once the game world is initialized. Doesn't ensure any world chunks actually exist. Use OnPlayerSpawned to ensure the chunks around player have been loaded or created.
2024-05-02 20:24:27 +03:00
--GamePrint( "OnWorldInitialized() " .. tostring(GameGetFrameNum()) )
2024-04-29 22:14:22 +03:00
end
local my_player = nil
function OnPlayerSpawned ( player_entity ) -- This runs when player entity has been created
GamePrint ( " OnPlayerSpawned() - Player entity id: " .. tostring ( player_entity ) )
2024-05-07 23:46:15 +03:00
my_player = player_fns.make_playerdata_for ( player_entity , ctx.my_id )
2024-05-02 20:24:27 +03:00
GamePrint ( " My peer_id: " .. ctx.my_id )
ctx.players [ ctx.my_id ] = my_player
ctx.ready = true
2024-05-08 20:33:41 +03:00
ctx.is_host = ctx.my_id == ctx.host_id
2024-05-07 23:46:15 +03:00
np.SetPauseState ( 4 )
np.SetPauseState ( 0 )
dofile_once ( " data/scripts/perks/perk.lua " )
local x , y = EntityGetFirstHitboxCenter ( player_entity )
2024-05-08 20:33:41 +03:00
perk_spawn ( x , y , " LASER_AIM " , true )
perk_spawn ( x - 50 , y , " GLASS_CANNON " , true )
2024-04-29 22:14:22 +03:00
end
function OnWorldPreUpdate ( ) -- This is called every time the game is about to start updating the world
if my_player == nil then return end
2024-05-02 20:24:27 +03:00
-- GamePrint( "Pre-update hook " .. tostring(GameGetFrameNum()) )
2024-04-29 22:14:22 +03:00
2024-05-02 20:24:27 +03:00
net.update ( )
2024-05-08 20:33:41 +03:00
if GameGetFrameNum ( ) % 1 == 0 then
2024-05-02 20:24:27 +03:00
local input_data = player_fns.serialize_inputs ( my_player )
local pos_data = player_fns.serialize_position ( my_player )
2024-05-05 23:49:10 +03:00
local current_slot = player_fns.get_current_slot ( my_player )
net.send_player_update ( input_data , pos_data , current_slot )
2024-04-29 22:14:22 +03:00
end
2024-05-08 20:33:41 +03:00
if GameGetFrameNum ( ) % 2 == 1 then
if ctx.is_host then
net.send_enemy_data ( enemy_sync.host_upload_entities ( ) )
else
enemy_sync.client_cleanup ( )
end
end
2024-05-03 23:38:40 +03:00
if GameGetFrameNum ( ) % 120 == 0 then
local inventory_state = player_fns.serialize_items ( my_player )
net.send_player_inventory ( inventory_state )
2024-05-07 23:46:15 +03:00
local perk_data = perk_fns.get_my_perks ( )
-- print(pretty.table(perk_data))
net.send_player_perks ( perk_data )
2024-05-03 23:38:40 +03:00
end
2024-05-02 20:24:27 +03:00
-- for i=1,#events do
-- local event = events[i]
-- GamePrint("event "..i.." "..event.kind)
-- if event.kind == "connect" then
-- player_fns.spawn_player_for(event.peer_id)
-- end
-- end
2024-04-29 22:14:22 +03:00
-- local sinp = player_fns.serialize_inputs(my_player)
-- player_fns.deserialize_inputs(sinp, other_player)
end
function register_localizations ( translation_file , clear_count )
clear_count = clear_count or 0
local loc_content = ModTextFileGetContent ( " data/translations/common.csv " ) -- Gets the original translations of the game
local append_content = ModTextFileGetContent ( translation_file ) -- Gets my own translations file
-- Split the append_content into lines
local lines = { }
for line in append_content : gmatch ( " [^ \n ]+ " ) do
table.insert ( lines , line )
end
-- Remove the first clear_count lines
for i = 1 , clear_count do
table.remove ( lines , 1 )
end
-- Reconstruct append_content after removing clear_count lines
local new_append_content = table.concat ( lines , " \n " )
-- if loc_content does not end with a new line, add one
if not loc_content : match ( " \n $ " ) then
loc_content = loc_content .. " \n "
end
-- Concatenate loc_content and new_append_content without extra newline character
local new_content = loc_content .. new_append_content .. " \n "
-- Set the new content to the file
ModTextFileSetContent ( " data/translations/common.csv " , new_content )
end
function OnModPreInit ( )
register_localizations ( " mods/quant.ew/translations.csv " , 1 )
2024-05-02 20:24:27 +03:00
ctx.init ( )
2024-04-30 23:49:51 +03:00
net.init ( )
2024-04-29 22:14:22 +03:00
end
function OnModPostInit ( )
end
print ( " entangled_worlds init ok " )