Code: Select all
Structure Weapon
name.s
damage.f
shootSpeed.i
bullets.i
bulletSpeed.f
bulletSize.i
range.f
angScatter.i
speedScatter.i
rangeScatter.i
cStart.i
cEnd.i
List special.c()
EndStructure
Global NewMap weapons.Weapon()
Code: Select all
Procedure loadWeapons(path.s)
If ReadFile(0,path)
While Not Eof(0)
tag.s = Trim(ReadString(0))
If Trim(LCase(StringField(tag,1,"="))) = "[weapon]"
name.s = Trim(StringField(tag,2,"="))
weapons(name)\name = name
Repeat
line.s = ReadString(0)
attr.s = Trim(LCase(StringField(line,1,"=")))
value.i = Val(Trim(StringField(line,2,"=")))
Print(attr + " ")
Print(Str(value))
PrintN("")
Select attr
Case "damage"
weapons()\damage = ValF(Trim(StringField(line,2,"=")))
Case "sspeed"
weapons()\shootSpeed = value
Case "bspeed"
weapons()\bulletSpeed = ValF(Trim(StringField(line,2,"=")))
Case "bullets"
weapons()\bullets = value
Case "bsize"
weapons()\bulletSize = value
Case "ascatter"
weapons()\angScatter = value
Case "sscatter"
weapons()\speedScatter = value
Case "range"
weapons()\range = ValF(Trim(StringField(line,2,"=")))
Case "rscatter"
weapons()\rangeScatter = value
Case "cstart"
values.s = StringField(line,2,"=")
r.c = Val(StringField(values,1,","))
g.c = Val(StringField(values,2,","))
b.c = Val(StringField(values,3,","))
weapons()\cStart = RGB(r,g,b)
Case "cend"
values.s = StringField(line,2,"=")
r.c = Val(StringField(values,1,","))
g.c = Val(StringField(values,2,","))
b.c = Val(StringField(values,3,","))
weapons()\cEnd = RGB(r,g,b)
Case "special"
values.s = LCase(StringField(line,2,"="))
valueCount.c = CountString(values,",") + 1
For i = 1 To valueCount
AddElement(weapons()\special())
Select Trim(StringField(values,i,","))
Case "explode"
weapons()\special() = #S_EXPLODE
Case "penetrate"
weapons()\special() = #S_PENETRATE
Case "ignite"
weapons()\special() = #S_IGNITE
Case "slow"
weapons()\special() = #S_SLOW
EndSelect
Next i
EndSelect
Until line = "[End]"
EndIf
Wend
CloseFile(0)
EndIf
EndProcedure
Code: Select all
[weapon] = Pistol
damage = 10
sSpeed = 500
bSpeed = 500
bullets = 1
aScatter = 5
sScatter = 0
range = 300
[End]