Created
January 9, 2014 09:58
-
-
Save killofwin/8331932 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Public Function GetSymmetryDuplication(Part As PartUnitClass) As Boolean[] | |
'Функция возвращает в виде битовой маски симметрию дублирования части | |
'Данная функция универсальна и работает со всем созданными в 2D редакторе (первом) проектами частей юнитов | |
Dim r As New Boolean[32] ' результат в массиве размером 32 бита, | |
' больше смысла нет, так как переменная определяющая симметрию занимает 32 бита (на 32 разрядных системах) | |
' Нулевой бит отвечает за саму же конечность и игнорируеться. | |
' Анализ результатов следует проводить с элемента 1. | |
' На всякий случай в качестве ограничителя счётчика используйте переменную со значением r.Max | |
' Использование же числа 31 = (32 - 1) может привести к несовместимости если процедура симметрии будет изменена на более сложную | |
Dim GODC As New GameObjectDataClass ' содержит нужные данные редактора | |
Dim LinkGODC As Integer ' ссылка на данные редактора в свойствах части юнита. | |
Dim a As Integer ' счётчик циклов | |
Dim b As Integer ' второй счётчик | |
Dim m As Integer | |
LinkGODC = Part.OtherValues.FindRangeID(Editor2dRangeMinID, Editor2dRangeMaxID) ' Для начала ищем описания характерные для Editor2D | |
If LinkGODC <> -1 Then | |
'свойство найдено | |
If TypeOf(Part.OtherValues.Values[LinkGODC]) = TypeOf(GODC) Then GODC = Part.OtherValues.Values[LinkGODC] ' присвоение ссылки для удобства (но только если типы совпадают) | |
If LinkGODC = Editor2dPartUnitMorfid Then ' это часть морфида первого типа | |
' а теперь вычислим симметрию дублирования этой части | |
m = r.Max | |
For a = 1 To m | |
'симметрия рассматриваеться включительно, то есть нулевой бит в маске указывает на саму же конечность | |
r[a] = BTst(GODC.IntegerValues[PropertyPartUnitMorfidMaskD], a) ' считываем маску дублирования по битам из переданной части | |
Next | |
Endif | |
' Другие типы юнитов 2D редактора | |
Endif | |
Return r | |
End | |
Public Function GetSymmetryBlocking(Part As PartUnitClass) As Boolean[] | |
'Функция возвращает в виде битовой маски симметрию блокирования части | |
'Данная функция универсальна и работает со всем созданными в 2D редакторе (первом) проектами частей юнитов | |
Dim r As New Boolean[32] ' результат в массиве размером 32 бита, | |
' больше смысла нет, так как переменная определяющая симметрию занимает 32 бита (на 32 разрядных системах) | |
' Нулевой бит отвечает за саму же конечность и игнорируеться. | |
' Анализ результатов следует проводить с элемента 1. | |
' На всякий случай в качестве ограничителя счётчика используйте переменную со значением r.Max | |
' Использование же числа 31 = (32 - 1) может привести к несовместимости если процедура симметрии будет изменена на более сложную | |
Dim GODC As New GameObjectDataClass ' содержит нужные данные редактора | |
Dim LinkGODC As Integer ' ссылка на данные редактора в свойствах части юнита. | |
Dim a As Integer ' счётчик циклов | |
Dim b As Integer ' второй счётчик | |
Dim m As Integer | |
LinkGODC = Part.OtherValues.FindRangeID(Editor2dRangeMinID, Editor2dRangeMaxID) ' Для начала ищем описания характерные для Editor2D | |
If LinkGODC <> -1 Then | |
'свойство найдено | |
If TypeOf(Part.OtherValues.Values[LinkGODC]) = TypeOf(GODC) Then GODC = Part.OtherValues.Values[LinkGODC] ' присвоение ссылки для удобства (но только если типы совпадают) | |
If LinkGODC = Editor2dPartUnitMorfid Then ' это часть морфида первого типа | |
' а теперь вычислим симметрию блокирования этой части | |
m = r.Max | |
For a = 1 To m | |
'симметрия рассматриваеться включительно, то есть нулевой бит в маске указывает на саму же конечность | |
r[a] = BTst(GODC.IntegerValues[PropertyPartUnitMorfidMaskD], a) ' считываем маску блокирования по битам из переданной части | |
Next | |
Endif | |
' Другие типы юнитов 2D редактора | |
Endif | |
Return r | |
End |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Пжздц как вырвиглазно выглядит
К такому надо привыкнуть.