⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objed.bas

📁 超级C&C有没有搞错,VB还能编出这种即时策略游戏来!没错,这就是我们的超级C&C!虽然游戏经常无故退出,但是原码仍有很多可圈可点的地方.祝你早日编出中国的超级RA,超级KKND,超级星际,超级家园
💻 BAS
字号:
Attribute VB_Name = "Module1"
Global Const FILE_TAGFILE = "ObjectFormat.Dat"
Global Const IonFile$ = "Original.Ion"
Global Const TAGOPMAX = 200
Global Const TAGDEFMAX = 200
Global Const CURRVERSION$ = "ION FORMAT VERSION: 1.0"
Type TagDf
  active As Boolean
  TagName As String
  NonOption As Boolean
  TagOptions(1 To TAGOPMAX) As String
  TagOptionMax As Integer
End Type
Global TagDefs(TAGDEFMAX) As TagDf
Global MaxTags As Integer

Type Objz
  active As Boolean
  Tags(TAGDEFMAX) As String
End Type
Global Const MAXOBJZ = 100
Global Objects(MAXOBJZ) As Objz
Global CObj As Integer
Sub LoadObjectTags()
On Error GoTo ErrRR
For i = 0 To TAGDEFMAX
  TagDefs(i).active = False
Next i
MaxTags = 0

Open FILE_TAGFILE For Input As #1
Do
  Line Input #1, a$
  If a$ = "[ENDOFFILE]" Then Exit Do
  If a$ = "[OBJTAGDEF]" Then
    MaxTags = MaxTags + 1
    TagDefs(MaxTags).active = True
    Line Input #1, a$
    TagDefs(MaxTags).TagName = a$
    OpMax = 0
    Do
      Line Input #1, a$
      If a$ = "[ENDOBJDEF]" Then Exit Do
      If a$ = "NULL" Then
        TagDefs(MaxTags).NonOption = True
        Exit Do
      Else
        TagDefs(MaxTags).NonOption = False
      End If
      OpMax = OpMax + 1
      TagDefs(MaxTags).TagOptions(OpMax) = a$
    Loop
    TagDefs(MaxTags).TagOptionMax = OpMax
  End If
Loop
Close #1
Form1.HScroll1.Max = MaxTags
Call UpdatePage
Exit Sub
ErrRR:
Close
Call UpdatePage
End Sub
Sub UpdatePage()
On Error Resume Next
tval = Form1.HScroll1.Value
PVal = Form1.List1.ListIndex
Form1.List1.Clear
Form1.List1.AddItem "[New Object]"
For i = 1 To MAXOBJZ
  If Objects(i).active = True Then
    Form1.List1.AddItem Objects(i).Tags(1)
  End If
Next i
DoEvents
Form1.List1.ListIndex = PVal
Form1.Text1.Text = TagDefs(tval).TagName
If TagDefs(tval).TagName = "ATTRIBUTE_SPRITE" Then
  Form1.Combo1.Clear
  Open "Sprites.Dat" For Input As #1
  Form1.Combo1.AddItem "-Nothing-"
  Do
    Line Input #1, a$
    If a$ = "[ENDOFFILE]" Then Exit Do
    If a$ = "[SPRITEDEF]" Then
      Line Input #1, a$
      a$ = Right$(a$, Len(a$) - 12)
      Form1.Combo1.AddItem a$
    End If
  Loop
  Close #1
  Form1.Combo1.Visible = True
  Form1.Text2.Visible = False
  If Objects(CObj).Tags(tval) <> "" Then Form1.Combo1.Text = Objects(CObj).Tags(tval)
ElseIf TagDefs(tval).TagName = "ATTRIBUTE_EXPLOSIONSPRITE" Then
  Form1.Combo1.Clear
  Form1.Combo1.AddItem "-Nothing-"
  Open "Sprites.Dat" For Input As #1
  Do
    Line Input #1, a$
    If a$ = "[ENDOFFILE]" Then Exit Do
    If a$ = "[SPRITEDEF]" Then
      Line Input #1, a$
      a$ = Right$(a$, Len(a$) - 12)
      Form1.Combo1.AddItem a$
    End If
  Loop
  Close #1
  Form1.Combo1.Visible = True
  Form1.Text2.Visible = False
  If Objects(CObj).Tags(tval) <> "" Then Form1.Combo1.Text = Objects(CObj).Tags(tval)
Else

    If TagDefs(tval).NonOption = True Then
      Form1.Combo1.Visible = False
      Form1.Text2.Visible = True
      If Objects(CObj).Tags(tval) = "" Then
        Form1.Text2.Text = "-Enter a value-"
      Else
        Form1.Text2.Text = Objects(CObj).Tags(tval)
      End If
    Else
      Form1.Combo1.Visible = True
      Form1.Text2.Visible = False
      Form1.Combo1.Clear
      For i = 1 To TagDefs(tval).TagOptionMax
        Form1.Combo1.AddItem TagDefs(tval).TagOptions(i)
      Next i
      If Objects(CObj).Tags(tval) <> "" Then
        Form1.Combo1.Text = Objects(CObj).Tags(tval)
      End If
    End If
End If
End Sub
Sub LoadObjz()
On Error GoTo ER
Open "Units.Dat" For Input As #1
Line Input #1, a$
Mo = 0
Select Case a$
Case "ION FORMAT VERSION: 1.0"
  Do
    Line Input #1, a$
    If a$ = "[ENDOFFILE]" Then Exit Do
    If a$ = "[OBJECTDEFSTART]" Then
      Mo = Mo + 1
      Objects(Mo).active = True
      For i = 1 To MaxTags
        Line Input #1, a$
        Objects(Mo).Tags(i) = GetPropertyValue(a$)
      Next i
    End If
  Loop
End Select
Close #1
Call UpdatePage
Exit Sub
ER:
Close #1
End Sub
Sub SaveObjz()
Open "Units.Dat" For Output As #1
Print #1, CURRVERSION$
For i = 1 To MAXOBJZ
  If Objects(i).active = True Then
    Print #1, "[OBJECTDEFSTART]"
    For i2 = 1 To MaxTags
      If Objects(i).Tags(i2) <> "" Then
        Print #1, TagDefs(i2).TagName & " " & Objects(i).Tags(i2)
      Else
        Print #1, TagDefs(i2).TagName
      End If
    Next i2
    Print #1, "[OBJECTDEFEND]"
  End If
Next i
Print #1, "[ENDOFFILE]"
Close #1
End Sub
Public Function GetPropertyValue(TextString) As String
GetPropertyValue = Right$(TextString, Len(TextString) - InStr(1, TextString, " "))
If InStr(1, TextString, " ") = 0 Then GetPropertyValue = ""
End Function

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -