1- using GeometryDashAPI . Attributes ;
1+ using System ;
2+ using GeometryDashAPI . Attributes ;
23using GeometryDashAPI . Levels . Enums ;
3- using GeometryDashAPI . Levels . GameObjects . Default ;
44
55namespace GeometryDashAPI . Levels . GameObjects . Specific
66{
7+ /// <summary>
8+ /// Represents the id of the speed block.<br/><br/>
9+ /// Not to be confused with <see cref="SpeedType"/>.<br/>
10+ /// Because it is responsible for a specific speed, instead of a specific block id
11+ /// </summary>
712 public enum SpeedBlockId
813 {
914 Orange = 200 ,
@@ -14,26 +19,59 @@ public enum SpeedBlockId
1419 }
1520
1621 [ GameBlock ( 200 , 201 , 202 , 203 , 1334 ) ]
17- public class SpeedBlock : Block
22+ public class SpeedBlock : Portal
1823 {
1924 [ GameProperty ( "24" , ( short ) Layer . B2 ) ] protected override short zLayer { get ; set ; } = ( short ) Layer . B2 ;
2025 [ GameProperty ( "25" , - 6 ) ] public override int ZOrder { get ; set ; } = - 6 ;
2126
22- [ GameProperty ( "13" , true , true ) ]
23- public bool Using { get ; set ; } = true ;
24-
2527 public SpeedBlockId BlockType
2628 {
2729 get => ( SpeedBlockId ) Id ;
2830 set => Id = ( int ) value ;
2931 }
3032
33+ public SpeedType SpeedType
34+ {
35+ get => FromBlockIdToSpeedType ( BlockType ) ;
36+ set => BlockType = FromSpeedTypeToBlockId ( value ) ;
37+ }
38+
3139 public SpeedBlock ( ) : base ( 201 )
3240 {
3341 }
3442
3543 public SpeedBlock ( SpeedBlockId type ) : base ( ( int ) type )
3644 {
3745 }
46+
47+ public SpeedBlock ( SpeedType type ) : base ( ( int ) FromSpeedTypeToBlockId ( type ) )
48+ {
49+ }
50+
51+ public static SpeedType FromBlockIdToSpeedType ( SpeedBlockId id )
52+ {
53+ return id switch
54+ {
55+ SpeedBlockId . Orange => SpeedType . Half ,
56+ SpeedBlockId . Default => SpeedType . Default ,
57+ SpeedBlockId . Green => SpeedType . X2 ,
58+ SpeedBlockId . Purple => SpeedType . X3 ,
59+ SpeedBlockId . Red => SpeedType . X4 ,
60+ _ => throw new ArgumentOutOfRangeException ( nameof ( id ) , id , null )
61+ } ;
62+ }
63+
64+ public static SpeedBlockId FromSpeedTypeToBlockId ( SpeedType speedType )
65+ {
66+ return speedType switch
67+ {
68+ SpeedType . Half => SpeedBlockId . Orange ,
69+ SpeedType . Default => SpeedBlockId . Default ,
70+ SpeedType . X2 => SpeedBlockId . Green ,
71+ SpeedType . X3 => SpeedBlockId . Purple ,
72+ SpeedType . X4 => SpeedBlockId . Red ,
73+ _ => throw new ArgumentOutOfRangeException ( nameof ( speedType ) , speedType , null )
74+ } ;
75+ }
3876 }
3977}
0 commit comments