mirror of
https://github.com/metrostroi-repo/MetrostroiAddon.git
synced 2026-05-02 00:42:29 +00:00
init
This commit is contained in:
217
lua/entities/gmod_track_sign/cl_init.lua
Normal file
217
lua/entities/gmod_track_sign/cl_init.lua
Normal file
@@ -0,0 +1,217 @@
|
||||
include("shared.lua")
|
||||
|
||||
surface.CreateFont("MetrostroiSubway_StationFont1", {
|
||||
font = "Arial",
|
||||
size = 96,
|
||||
weight = 0,
|
||||
blursize = 0,
|
||||
scanlines = 0,
|
||||
antialias = true,
|
||||
underline = false,
|
||||
italic = false,
|
||||
strikeout = false,
|
||||
symbol = false,
|
||||
rotary = false,
|
||||
shadow = false,
|
||||
additive = false,
|
||||
outline = false,
|
||||
extended = true
|
||||
})
|
||||
|
||||
surface.CreateFont("MetrostroiSubway_StationFont2", {
|
||||
font = "Times New Roman",
|
||||
size = 128,
|
||||
weight = 0,
|
||||
antialias = true,
|
||||
extended = true
|
||||
})
|
||||
|
||||
surface.CreateFont("MetrostroiSubway_StationList1", {
|
||||
font = "Arial",
|
||||
size = 28,
|
||||
weight = 1000,
|
||||
antialias = true,
|
||||
extended = true
|
||||
})
|
||||
surface.CreateFont("MetrostroiSubway_StationList2", {
|
||||
font = "Arial",
|
||||
size = 28,
|
||||
weight = 0,
|
||||
antialias = true,
|
||||
extended = true
|
||||
})
|
||||
surface.CreateFont("MetrostroiSubway_StationList3", {
|
||||
font = "Arial",
|
||||
size = 28,
|
||||
weight = 0,
|
||||
antialias = true,
|
||||
extended = true
|
||||
})
|
||||
|
||||
function ENT:Initialize()
|
||||
self:SetRenderBounds(
|
||||
Vector(-16,-768,-64),
|
||||
Vector(16,768,64))
|
||||
end
|
||||
|
||||
local P1 = -2
|
||||
local P2 = 3
|
||||
function ENT:DrawStation(x,y,ID,currentStation,R1,G1,B1,W,H,text1,text2,text3)
|
||||
local R2 = 225
|
||||
local G2 = 205
|
||||
local B2 = 0
|
||||
|
||||
if currentStation then
|
||||
local R,G,B = R2,G2,B2
|
||||
R2,G2,B2 = R1,G1,B1
|
||||
R1,G1,B1 = R,G,B
|
||||
end
|
||||
|
||||
self.LastColor = self.LastColor or Color(R1,G1,B1,255)
|
||||
|
||||
surface.SetDrawColor(0,0,0,255)
|
||||
surface.DrawRect(x+P1,y,W-P1*2,H)
|
||||
|
||||
surface.SetDrawColor(R1,G1,B1,255)
|
||||
surface.DrawRect(x+P1+P2,y+P2,W-P1*2-P2*2,H-P2*2)
|
||||
|
||||
local cx = x+W*0.1
|
||||
local cy = y+H*0.5
|
||||
local N = 10
|
||||
local radius = 23
|
||||
local step = 2*math.pi/N
|
||||
local vertexBuffer = { {}, {}, {} }
|
||||
|
||||
surface.SetDrawColor(255,255,255,255)
|
||||
for i=1,N do
|
||||
vertexBuffer[1].x = cx + radius*math.sin(step*(i+0))
|
||||
vertexBuffer[1].y = cy + radius*math.cos(step*(i+0))
|
||||
vertexBuffer[2].x = cx
|
||||
vertexBuffer[2].y = cy
|
||||
vertexBuffer[3].x = cx + radius*math.sin(step*(i+1))
|
||||
vertexBuffer[3].y = cy + radius*math.cos(step*(i+1))
|
||||
surface.DrawPoly(vertexBuffer)
|
||||
end
|
||||
|
||||
draw.Text({
|
||||
text = text1,
|
||||
font = "MetrostroiSubway_StationList3",
|
||||
pos = { x+W*0.1, y+H*0.5},
|
||||
xalign = TEXT_ALIGN_CENTER,
|
||||
yalign = TEXT_ALIGN_CENTER,
|
||||
color = Color(0,0,0,255)})
|
||||
draw.Text({
|
||||
text = text2,
|
||||
font = "MetrostroiSubway_StationList1",
|
||||
pos = { x+W*0.55, y+H*0.25},
|
||||
xalign = TEXT_ALIGN_CENTER,
|
||||
yalign = TEXT_ALIGN_CENTER,
|
||||
color = Color(0,0,0,255)})
|
||||
draw.Text({
|
||||
text = text3,
|
||||
font = "MetrostroiSubway_StationList2",
|
||||
pos = { x+W*0.55, y+H*0.75},
|
||||
xalign = TEXT_ALIGN_CENTER,
|
||||
yalign = TEXT_ALIGN_CENTER,
|
||||
color = Color(0,0,0,255)})
|
||||
end
|
||||
|
||||
function ENT:Draw()
|
||||
local pos = self:LocalToWorld(Vector(4,0,16))
|
||||
local ang = self:LocalToWorldAngles(Angle(0,90,90))
|
||||
cam.Start3D2D(pos, ang, 0.50)
|
||||
--surface.SetDrawColor(255,255,255,255)
|
||||
--surface.DrawRect(0, 0, 256, 320)
|
||||
|
||||
draw.Text({
|
||||
text = self:GetNW2String("Name","Error"),
|
||||
font = "MetrostroiSubway_StationFont2",--..self:GetNW2Int("Style",1),
|
||||
pos = { 0, 0 },
|
||||
xalign = TEXT_ALIGN_CENTER,
|
||||
yalign = TEXT_ALIGN_CENTER,
|
||||
color = Color(0,0,0,255)})
|
||||
cam.End3D2D()
|
||||
|
||||
local pos = self:LocalToWorld(Vector(4,0,-32))
|
||||
local ang = self:LocalToWorldAngles(Angle(0,90,90))
|
||||
cam.Start3D2D(pos, ang, 0.125)
|
||||
draw.NoTexture()
|
||||
|
||||
local N = self:GetNW2Int("StationList#")
|
||||
local W = 320
|
||||
local H = 64
|
||||
local X = -N*W*0.5
|
||||
self.LastColor = nil
|
||||
for i=1,N do
|
||||
local x = X+W*(i-1)
|
||||
local ID = self:GetNW2Int("StationList"..i.."[ID]")
|
||||
local currentStation = (self:GetNW2Int("ID") == ID)
|
||||
|
||||
local R1 = self:GetNW2Int("StationList"..i.."[R]")
|
||||
local G1 = self:GetNW2Int("StationList"..i.."[G]")
|
||||
local B1 = self:GetNW2Int("StationList"..i.."[B]")
|
||||
|
||||
self:DrawStation(x,0,ID,currentStation,R1,G1,B1,W,H,
|
||||
self:GetNW2String("StationList"..i.."[ID]"),
|
||||
self:GetNW2String("StationList"..i.."[Name1]"),
|
||||
self:GetNW2String("StationList"..i.."[Name2]"))
|
||||
|
||||
-- Draw change
|
||||
if self:GetNW2Int("Change2") == tonumber(self:GetNW2String("StationList"..i.."[ID]")) then
|
||||
local Nc = self:GetNW2Int("Change2List#")
|
||||
local ChangeStation = self:GetNW2Int("Change2ID")
|
||||
local N2 = 0
|
||||
for j=1,Nc do
|
||||
if self:GetNW2Int("Change2List"..j.."[ID]") < ChangeStation then
|
||||
N2 = N2 + 1
|
||||
end
|
||||
end
|
||||
|
||||
for j=1,Nc do
|
||||
local ID = self:GetNW2Int("Change2List"..j.."[ID]")
|
||||
local R2 = self:GetNW2Int("Change2List"..j.."[R]")
|
||||
local G2 = self:GetNW2Int("Change2List"..j.."[G]")
|
||||
local B2 = self:GetNW2Int("Change2List"..j.."[B]")
|
||||
|
||||
local H2 = H*0.85
|
||||
local y = 0
|
||||
if j <= N2
|
||||
then y = -H2*(N2-j+1)
|
||||
else y = 0+H+H2*(j-N2-1)
|
||||
end
|
||||
|
||||
self:DrawStation(x,y,ID,false,R2,G2,B2,W,H2,
|
||||
self:GetNW2String("Change2List"..j.."[ID]"),
|
||||
self:GetNW2String("Change2List"..j.."[Name1]"),
|
||||
self:GetNW2String("Change2List"..j.."[Name2]"))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Inner part of arrow
|
||||
local arrow = {
|
||||
{ x = 0, y = 0 },
|
||||
{ x = 0, y = H },
|
||||
{ x = -H/2, y = H/2 },
|
||||
}
|
||||
for k,v in ipairs(arrow) do
|
||||
v.x = v.x - (N*0.5)*W - 2
|
||||
end
|
||||
|
||||
surface.SetDrawColor(Color(0,0,0,255))
|
||||
surface.DrawPoly(arrow)
|
||||
|
||||
-- Outer part of arrow
|
||||
arrow = {
|
||||
{ x = -P2, y = 2*P2 },
|
||||
{ x = -P2, y = H-2*P2 },
|
||||
{ x = -H/2+P2, y = H/2 },
|
||||
}
|
||||
for k,v in ipairs(arrow) do
|
||||
v.x = v.x - (N*0.5)*W
|
||||
end
|
||||
|
||||
surface.SetDrawColor(self.LastColor or Color(0,0,0,0))
|
||||
surface.DrawPoly(arrow)
|
||||
cam.End3D2D()
|
||||
end
|
||||
Reference in New Issue
Block a user