Missing type specifier?
BlitzMax Forums/BlitzMax Beginners Area/Missing type specifier?| 
 | ||
| I get a missing type specifier in this function. Function CreateBalloon:Int(balloon.BalloonCount:Int) For Local xiter:Int = 0 To balloon.BalloonCount Local b:balloon = New balloon b.XLoc = GraphicsWidth()/2 b.YLoc = GraphicsHeight()/2 b.Speed = Rand(3,10) b.BFrame = Rand(0,4) b.Direction = Rand(0,359) ListAddLast BalloonList,(b) If xiter => balloon.MaxBalloons Exit End If Return b Next BLIde points to the parameter section of the function as the problem part. Any help appreciated? [edit] I'm in SuperStrict mode. | 
| 
 | ||
| I fixed it. New problem. I'm getting a "can't find b" in the following listremove section. Method UpdateBalloons() DrawImage AllBalloons,xloc,yloc,BFrame xloc:+ Cos(Direction) * Speed yloc:+ Sin(Direction) * Speed If xloc > 1050 or xloc < -50 ListRemove BalloonList,b End If If yloc > 790 or yloc < - 50 ListRemove BalloonList,b EndIf End Method [edit] Hang on. I have to redesign how I destroy things. | 
| 
 | ||
| I don't know what I'm doing. Can someone point me in the right direction on how to properly code this type? 
Type balloon
	
	Global List:TList
	Field Link:TLink
	
	Field xloc:Int
	Field YLoc:Int
	Field Speed:Int
	Field BFrame:Int
	Field Direction:Int
		
	Global BalloonCount:Int = 0
	Global MaxBalloons:Int = 20
   Method New()
      If List=Null
         List=New TList
      End If
      Link=List.AddLast(Self)
   End Method
   Method Kill()
      Link.Remove()
      Link=Null
   End Method
		Function CreateBalloon:Int(BalloonCount:Int)
		
			For Local xiter:Int = 0 To balloon.BalloonCount
				Local b:balloon = New balloon
				b.XLoc = GraphicsWidth()/2
				b.YLoc = GraphicsHeight()/2
				b.Speed = Rand(3,10)
				b.BFrame = Rand(0,4)
				b.Direction = Rand(0,359)
							
				If balloon.BalloonCount >= balloon.MaxBalloons
					Exit
				End If
				Return BalloonCount			
			Next
			
			If balloon.BalloonCount => balloon.MaxBalloons Then balloon.BalloonCount = balloon.MaxBalloons
		End Function
		
		Method UpdateBalloons()
			DrawImage AllBalloons,xloc,yloc,BFrame
				xloc:+ Cos(Direction) * Speed
				yloc:+ Sin(Direction) * Speed
				
				If xloc > 1050 or xloc < -50 
				
					balloon.Kill
			
				End If
				If yloc > 790 or yloc < - 50
				
					balloon.Kill
			
				EndIf							
		End Method
		
End Type
I want to be able to remove a balloon when it exceeds it's boundaries. I'm still not that good with OOP. :/ | 
| 
 | ||
| maybe something along the lines of... Type balloon Global BalloonList:TList = New TList Global BalloonCount:Int = 0 Const MaxBalloons:Int = 20 Field xloc:Int Field YLoc:Int Field Speed:Int Field BFrame:Int Field Direction:Int Method Kill() BalloonList.Remove(Self) End Method Function CreateBalloon:Int(count:Int) ' trim count to fit... If BalloonCount + count > MaxBalloons Then count = MaxBalloons - BalloonCount ' add balloons For Local xiter:Int = 0 To count Local b:balloon = New balloon b.XLoc = GraphicsWidth()/2 b.YLoc = GraphicsHeight()/2 b.Speed = Rand(3,10) b.BFrame = Rand(0,4) b.Direction = Rand(0,359) ListAddLast BalloonList, b BalloonCount :+ 1 Next Return BalloonCount End Function Method UpdateBalloon() DrawImage AllBalloons,xloc,yloc,BFrame xloc:+ Cos(Direction) * Speed yloc:+ Sin(Direction) * Speed If xloc > 1050 Or xloc < -50 Kill End If If yloc > 790 Or yloc < - 50 Kill EndIf End Method Function UpdateBalloons() For Local b:balloon = EachIn BalloonList b.updateBalloon() Next End Function End Type | 
| 
 | ||
| Nice one. Thanks. Works perfectly. :) |