January 19, 2021, 10:04:30 PM
Welcome,
Guest
. Please
login
or
register
.
Did you miss your
activation email
?
1 Hour
1 Day
1 Week
1 Month
Forever
Login with username, password and session length
Home
Forum
Help
Search
Gallery
Login
Register
SyntaxBomb - Indie Coders
»
Languages & Coding
»
Blitz Code Archives
»
User Input
»
[bb] RTS Drag Select by zoqfotpik [ 1+ years ago ]
« previous
next »
Print
Pages: [
1
]
Go Down
Author
Topic: [bb] RTS Drag Select by zoqfotpik [ 1+ years ago ] (Read 1397 times)
BlitzBot
Jr. Member
Posts: 1
[bb] RTS Drag Select by zoqfotpik [ 1+ years ago ]
«
on:
June 29, 2017, 12:28:43 AM »
Title :
RTS Drag Select
Author :
zoqfotpik
Posted :
1+ years ago
Description :
This is the drag select we're all familiar with from RTS games. Knock yourselves out.
Code :
Code: BlitzBasic
' RTS Drag
Select
' By ZoqFotPik
Type
dragrect ' a mousedrag
rect
Field
upperleft:
Int
, upperright:
Int
, lowerleft:
Int
, lowerright:
Int
End Type
Global
objects:TList =
New
TList
Type
selectobject
Field
x:
Int
Field
y:
Int
Field
selected:
Int
Method draw
(
)
SetColor
255
,
255
,
255
DrawRect x-
5
,y-
5
,
10
,
10
If
selected =
1
SetColor
0
,
255
,
0
DrawRect x-
10
,y-
10
,
15
,
15
EndIf
End
Method
End Type
Graphics
640
,
480
For
i =
1
To
100
Local
tempobj:selectobject =
New
selectobject
tempobj.x =
Rand
(
640
)
tempobj.y =
Rand
(
480
)
objects.addlast
(
tempobj
)
Next
Global
selectx:
Int
Global
selecty:
Int
' these are the x
and
y origins of a
select
box
Global
selectflag:
Int
' is a selectbox active?
Print
leastof
(
5
,
10
)
Print
greaterof
(
5
,
10
)
While
Not
KeyHit
(
KEY_ESCAPE
)
Cls
If
MouseDown
(
1
)
If
Selectflag =
0
selectflag =
1
selectx =
MouseX
(
)
selecty =
MouseY
(
)
EndIf
EndIf
Local
tempobj2:selectobject =
New
selectobject
For
tempobj2 = EachIn objects
tempobj2.draw
(
)
Next
If
selectflag =
1
SetColor
0
,
255
,
0
DrawLine selectx, selecty,
MouseX
(
)
, selecty
DrawLine
MouseX
(
)
,selecty,
MouseX
(
)
,
MouseY
(
)
DrawLine
MouseX
(
)
,
MouseY
(
)
, selectx,
MouseY
(
)
DrawLine selectx,
MouseY
(
)
,selectx,selecty
If
Not
MouseDown
(
1
)
selectflag =
0
Local
ux:
Int
= leastof
(
MouseX
(
)
,selectx
)
Local
uy:
Int
= leastof
(
MouseY
(
)
,selecty
)
Local
lx:
Int
= greaterof
(
MouseX
(
)
,selectx
)
Local
ly:
Int
= greaterof
(
MouseY
(
)
,selecty
)
For
tempobj2 = EachIn objects
If
tempobj2.x > ux
And
tempobj2.y > uy
And
tempobj2.x<lx
And
tempobj2.y <ly
tempobj2.selected =
1
Else
tempobj2.selected =
0
EndIf
Next
EndIf
EndIf
Flip
Wend
'leastof
and
greaterof are necessary in
case
of a leftward
or
upward drag of the
select
box
Function
leastof
(
n1:
Int
, n2:
Int
)
Local
least:
Int
If
n1>n2 least = n2
If
n2>n1 least = n1
Return
least
End Function
Function
greaterof
(
n1:
Int
, n2:
Int
)
Local
greater:
Int
If
n1>n2 greater= n1
If
n2>n1 greater= n2
Return
greater
End Function
Comments :
virtlands(Posted 1+ years ago)
{ The files are actually *.BMX files. }Color Cycling and Procedural Critters :: <font class="tiny"> <a href="
http://uploadingit.com/file/xnrveey7fjoc93mk/Color
Cycling and Procedural Critters_3089.bmx" target="_blank">
http://uploadingit.com/file/xnrveey7fjoc93mk/Color%20Cycling%20and%20Procedural%20Critters_3089.bmx
[/url] </font>RTS Drag Effect :: <font class="tiny"> <a href="
http://uploadingit.com/file/dmoxb7q8pplmotpz/RTS
Drag Select_3088.bmx" target="_blank">
http://uploadingit.com/file/dmoxb7q8pplmotpz/RTS%20Drag%20Select_3088.bmx
[/url] </font>Image Recursion :: <font class="tiny"> <a href="
http://uploadingit.com/file/kv2u1husmv3ulyob/Image
Recursion_3087.bmx" target="_blank">
http://uploadingit.com/file/kv2u1husmv3ulyob/Image%20Recursion_3087.bmx
[/url] </font>[
RTS Drag Effect
screenshot: ][img]imagizer.imageshack.us/a/img802/8319/y4bf.html"> [img]imagizer.imageshack.us/a/img571/3012/gjjc.html">
_PJ_(Posted 1+ years ago)
What might be of note, that whenever dragging a selection rectangle, the change of state between selected and non-selected only ever occurs when the rectangle boundary intersects with the dimensions of the position of the entities.Therefore, depending on how many potential selectable entities there are, it may be quicker to check for this 'collision' rather than continuous checks for the positions of every entity.
Logged
Print
Pages: [
1
]
Go Up
« previous
next »
SyntaxBomb - Indie Coders
»
Languages & Coding
»
Blitz Code Archives
»
User Input
»
[bb] RTS Drag Select by zoqfotpik [ 1+ years ago ]
SimplePortal 2.3.6 © 2008-2014, SimplePortal