add game&rawdata

This commit is contained in:
Vasily Petrov 2026-06-17 23:06:51 +03:00
parent 0133cd976c
commit 49b34b5546
45731 changed files with 709831 additions and 0 deletions

View file

@ -0,0 +1,181 @@
local scenes_table = {
}
gOldVer = CUIListItemEx~=nil
if(gOldVer) then
class "scene_item" (CUIListItemEx)
else
class "scene_item" (CUIListBoxItem)
end
function scene_item:__init(height) super(height)
if(gOldVer) then
self:SetWndRect (Frect():set(0,0,300,22))
local ca = 255
local cr = 216
local cg = 186
local cb = 140
self.text = CUIStatic ()
self.text:SetAutoDelete (true)
self:AttachChild (self.text)
self.text:SetWndRect (Frect():set(0,0,300,22))
self.text:TextControl():SetText ("filename")
self.text:TextControl():SetFont (GetFontLetterica18Russian())
self.text:TextControl():SetTextColor (ca,cr,cg,cb)
else
self.text = self:GetTextItem()
self.text:SetWndRect (Frect():set(0,0,300,22))
self:SetTextColor(GetARGB(255, 216, 186, 140))
self.text:SetFont(GetFontLetterica18Russian())
self.text:SetEllipsis(true)
end
end
class "scenes_item_dialog" (CUIScriptWnd)
function scenes_item_dialog:__init() super()
self:InitControls()
self:InitCallBacks()
self:FillList()
end
function scenes_item_dialog:__finalize()
end
function scenes_item_dialog:FillList()
local scenes_ini = ini_file("scripts\\scenes.ltx")
local level_name = level.name()
if not scenes_ini:section_exist(level_name) then
return
end
local line_count = scenes_ini:line_count(level_name)
for line_number = 0, line_count - 1 do
local result, id, value = scenes_ini:r_line(level_name,line_number,"","")
local parsed_value = utils.parse_params(value)
scenes_table[id] = parsed_value
self:AddItemToList(id)
end
end
function scenes_item_dialog:InitControls()
local xml = CScriptXmlInit()
local ctrl
xml:ParseFile ("ui_scenes_dlg.xml")
ctrl = xml:InitStatic("background",self)
self.wnd_size = vector2():set(ctrl:GetWidth(),ctrl:GetHeight())
self:SetWndPos (vector2():set(100,100))
self:SetWndSize (self.wnd_size)
ctrl:SetWndPos (vector2():set(0,0))
if(gOldVer) then
self.list = xml:InitList ("list",self)
else
self.list = xml:InitListBox ("list",self)
end
self.list:ShowSelectedItem (true)
self:Register (self.list, "list_window")
self.check_teleport = xml:InitCheck("check_teleport_actor",self)
self.check_spawn_items = xml:InitCheck("check_spawn_items",self)
self.check_teleport:SetCheck(true)
self.check_spawn_items:SetCheck(true)
ctrl = xml:Init3tButton("btn_create",self)
self:Register (ctrl, "btn_create")
ctrl = xml:Init3tButton ("btn_close",self)
self:Register (ctrl, "btn_close")
end
function scenes_item_dialog:InitCallBacks()
self:AddCallback("btn_create", ui_events.BUTTON_CLICKED, self.OnButton_create_clicked, self)
self:AddCallback("btn_close", ui_events.BUTTON_CLICKED, self.OnButton_close_clicked, self)
self:AddCallback("list_window", ui_events.WINDOW_LBUTTON_DB_CLICK, self.OnButton_create_clicked, self)
end
function scenes_item_dialog:OnButton_create_clicked()
if self.list:GetSize()==0 then
return
end
local item
if(gOldVer) then
local index = self.list:GetSelectedItem()
if index == -1 then
return
end
item = self.list:GetItem(index)
else
item = self.list:GetSelectedItem()
end
if item == nil then
return
end
local itmname = item.text:GetText()
if scenes_table[itmname][1] ~= nil then
db.actor:give_info_portion(scenes_table[itmname][1])
end
if self.check_teleport:GetCheck() then
local point
if scenes_table[itmname][2] ~= nil then
point = patrol(scenes_table[itmname][2])
db.actor:set_actor_position(point:point(0))
end
if scenes_table[itmname][3] ~= nil then
local look = patrol(scenes_table[itmname][3])
local dir = -look:point(0):sub(point:point(0)):getH()
db.actor:set_actor_direction(dir)
end
end
if self.check_spawn_items:GetCheck() then
if scenes_table[itmname][4] ~= nil then
local spawn_items = utils.parse_names(scenes_table[itmname][4])
for k,v in pairs (spawn_items) do
alife():create(v, db.actor:position(), 0, 0, db.actor:id())
end
end
end
self:HideDialog()
_G.scenes_dlg = nil
end
function scenes_item_dialog:OnButton_close_clicked()
self:HideDialog()
_G.scenes_dlg = nil
end
function scenes_item_dialog:OnKeyboard(dik, keyboard_action)
local bind = dik_to_bind(dik)
if bind == key_bindings.kQUIT then
self:OnButton_close_clicked()
else
if dik==28 then
self:OnButton_create_clicked()
end
end
return true
end
function scenes_item_dialog:AddItemToList(item_name)
local _itm = scene_item(self.wnd_size.y)
_itm.text:SetText (item_name)
self.list:AddExistingItem (_itm)
end
function main()
if _G.scenes_dlg==nil then
_G.scenes_dlg = scenes_item_dialog()
end
_G.scenes_dlg:ShowDialog(true)
end