コード例 #1
0
 public PinnedConfig(Config config)
 {
     StartPositions = new PinnedManagedObject <PositionStart[]>(config.StartPositions);
     EndPositions   = new PinnedManagedObject <PositionEnd[]>  (config.EndPositions);
     BragPositions  = new PinnedManagedObject <PositionEnd[]>  (config.BragPositions);
     StageId        = config.StageId;
 }
コード例 #2
0
        public DefaultStage(StageId stageId)
        {
            StageId = stageId;
            var stageInfo = StageInfo.FromStageId(stageId);

            if (stageInfo.MultiplayerStartPositions != null)
            {
                /* For Rose and Chaotix copy 1P and 2P spawns. */
                _startPositionsSingleInMultiplayer = new PinnedManagedObject <PositionStart[]>(new[]
                {
                    stageInfo.MultiplayerStartPositions->Player1Start,
                    stageInfo.MultiplayerStartPositions->Player2Start,
                    stageInfo.MultiplayerStartPositions->Player1Start,
                    stageInfo.MultiplayerStartPositions->Player2Start
                });
                StartPositions = (PositionStart *)_startPositionsSingleInMultiplayer.ObjectPtr;
            }
            else
            {
                if (stageInfo.StartPositions != null)
                {
                    StartPositions = &stageInfo.StartPositions->SonicStart;
                }
            }

            if (stageInfo.MultiplayerBragPositions != null)
            {
                BragPositions = &stageInfo.EndPositions->SonicEnd;
            }

            if (stageInfo.EndPositions != null)
            {
                EndPositions = &stageInfo.EndPositions->SonicEnd;
            }

            /* Replace any nulls with defaults. */
            if (StartPositions == null)
            {
                StartPositions = _defaultStartPositions.AsPointer <PositionStart>();
            }

            if (EndPositions == null)
            {
                EndPositions = _defaultEndPositions.AsPointer <PositionEnd>();
            }

            if (BragPositions == null)
            {
                BragPositions = _defaultEndPositions.AsPointer <PositionEnd>();
            }
        }