summaryrefslogtreecommitdiff
path: root/gamemode/itemsystem/common.lua
blob: 65239d6904a280c98efbdbddcf015b26cba5565d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
--This file holds a bunch of common functions that happen in items. They're seperated out here so that they're easy to change if there's a bug somewhere.

--Freezes the player, creates the loading bar, and calls ondone when the timer is up.
function startProcessGeneric(player, string, time, ondone)
  if(player.InProcess) then
    self.Owner:SendMessage("You can't do that much at once!", 3, Color(255, 255, 255, 255))
    return
  end
  player.InProcess = true
  player:Freeze(true)
  player:MakeProcessBar( string, time, false )
  timer.Create( "process", time, 1, function()
    player:Freeze(false)
    player.InProcess = false
    player:StopProcessBar()
    ondone()
  end)
end

function genericMakeDroppable(tbl)
  local drop1 = function(player)
    genericDropResource(player,tbl.Name,1)
  end
  local dropall = function(player)
    PrintTable(Resources)
    print("Ammount:" .. Resources[tbl.Name])
    genericDropResource(player,tbl.Name,Resources[tbl.Name])
  end
  local dropx = function(player)
    if(SERVER) then return end
    local frame = vgui.Create( "DFrame" )
    frame:SetSize( 400, 200 )
    frame:Center()
    frame:MakePopup()

    local TextEntry = vgui.Create( "DTextEntry", frame )	-- create the form as a child of frame
    TextEntry:SetPos( 25, 50 )
    TextEntry:SetSize( 75, 85 )
    TextEntry:SetText( "Sample String" )
    TextEntry.OnEnter = function( self )
      genericDropResource(player,tbl.Name,self:GetValue())
    end

  end
  if(tbl.Actions == nil) then
    tbl.Actions = {}
  end
  if(tbl.Actions["Drop"] == nil) then
    tbl.Actions["Drop"] = {}
  end
  tbl.Actions["Drop"]["Drop 1"] = drop1
  tbl.Actions["Drop"]["Drop all"] = dropall
  tbl.Actions["Drop"]["Drop X"] = dropx
end


if(SERVER) then
  util.AddNetworkString( "gms_dropresources" )
end
function genericDropResource(player, resource, ammount)
  if(CLIENT) then
    net.Start("gms_dropresources")
    net.WriteString(resource)
    net.WriteInt(ammount,GMS.NETINT_BITCOUNT)
    net.SendToServer()
  end
  if(SERVER) then
    if(player.Resources[resource] < ammount) then
      player:SendMessage("You don't have that many to drop!", 3, Color(255, 255, 255, 255))
      return
    end
    local res = player.Resources[resource]

    if ( ammount > res ) then
      ammount = res
    end
    player:DropResource( resource, ammount )
    player:DecResource( resource, ammount )
  end
end
net.Receive( "gms_dropresources", function(len,pl)
  local resourcename = net.ReadString()
  local resourcenum = net.ReadInt(GMS.NETINT_BITCOUNT)
  print("resourcename:" .. resourcename)
  print("resourcenum:" .. resourcenum)
  genericDropResource(pl,resourcename,resourcenum)
end)