Exemplo n.º 1
0
 private IEnumerable <ColumnType> getResults(StageDefinition definition)
 {
     for (int i = 0; i < definition.Columns; i++)
     {
         yield return(definition.GetTypeOfColumn(i));
     }
 }
Exemplo n.º 2
0
 public MissionDefinition Initialize(string name, float duration, StageDefinition stageDefinition)
 {
     this.name            = name;
     this.duration        = duration;
     this.stageDefinition = stageDefinition;
     return(this);
 }
Exemplo n.º 3
0
    public PuzzleBoard(PuzzleBoardHandler handler, StageDefinition stageDefinition, PoemInstance poemInstance)
    {
        this.handler          = handler;
        this.stageDefinition  = stageDefinition;
        this.poemDefinition   = stageDefinition.PoemDefinition;
        this.puzzleDefinition = stageDefinition.PuzzleDefinition;
        this.poemInstance     = poemInstance;

        Vector2 size = TranslateBoardSize(this.puzzleDefinition.BoardSize);

        this.Width  = (int)size.x;
        this.Height = (int)size.y;

        List <string> targetCharacterIds    = ComposeTargetCharIds();
        List <string> appearingCharacterIds = GenerateAppearingCharIds(targetCharacterIds);

        this.PuzzleCharacters = new List <PuzzleCharacter>();
        currentCharacterIndex = 0;
        foreach (string appearingCharId in appearingCharacterIds)
        {
            this.PushCharacter(appearingCharId);
        }

        Debug.Log("Pushed all appearing characters.");

        try
        {
            GenerateAndEnsureMatrix(this.PuzzleCharacters);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
        private async void DisplayPage()
        {
            while (currentPage != 0 && stageReferences.Count < (stagesPerPage * currentPage))
            {
                currentPage--;
            }
            foreach (Transform child in stageContentHolder)
            {
                Destroy(child.gameObject);
            }

            for (int i = stagesPerPage * currentPage; i < (stagesPerPage * currentPage) + stagesPerPage; i++)
            {
                if (i >= stageReferences.Count)
                {
                    return;
                }

                ModObjectReference stageReference = stageReferences[i];

                StageDefinition stageDefinition = await GameManager.current.ModManager.GetStageDefinition(stageReferences[i]);

                if (!stageDefinition.selectableForGamemodes)
                {
                    continue;
                }

                StageContentItem stageItem = Instantiate(stageContentItemPrefab.gameObject, stageContentHolder, false)
                                             .GetComponent <StageContentItem>();
                stageItem.eventTrigger.AddOnSubmitListeners((d) => { StageSelected(stageReference); });
            }
        }
Exemplo n.º 5
0
 private void LoadNewStage(StageDefinition stage, Vector2 playerPosition)
 {
     //ColorManager.Instance.SwitchScheme(stage.colorStyle, 0);
     Instantiate(stage.StagePrefab, transform.position, Quaternion.identity);
     PlayerController.Instance.gameObject.transform.position = playerPosition;
     onUpdateProgression.Invoke(StageProgression);
 }
Exemplo n.º 6
0
    public void ShowStageDefinitions(Vector3 position)
    {
        HideStageDefinitions();
        int count = _selectedStageSet.stageDefinitions.Count;

        Add(_stages = new Layout("StageDefinitionButtons", 4, 1 * (count + 1), 0.25f, 0.1f, count + 1, container));
        _stages.SetPosition(position + (Vector3.left * (stageSets.width - 0.5f)) + (Vector3.back * ((count * 0.5f) + (0.25f * 0.5f))));
        _stages.Add(new List <RenameableDeletableButton>(RenameableDeletableButton.GetButtons(count, (int index) => new RenameableDeletableButton(GetStageDefinition(index).name, 4, 1, container,
                                                                                                                                                  fontSize: 20,
                                                                                                                                                  DeleteStay: (Button b) =>
        {
            if (Input.GetMouseButtonUp(0))
            {
                _selectedStageSet.Remove(GetStageDefinition(index));
                ShowStageDefinitions(position);
            }
        },
                                                                                                                                                  EndInput: (Field field) =>
        {
            GetStageDefinition(index).name = field.label.text;
            field.SetColor(Color.white);
        },
                                                                                                                                                  Enter: (Button button) => button.SetColor(Color.green),
                                                                                                                                                  Stay: (Button button) =>
        {
            if (_selectedStageSet != null && Input.GetMouseButtonDown(0))
            {
                selectedStageDefinition = GetStageDefinition(index);

                HideStageSets();
                HideStageDefinitions();
                HideStage();

                SetStageDefinition(selectedStageDefinition);
                _editor.testButton.Enable();
                _editor.testButton.Show();
                ShowStage();

                ShowStageSets();
                ShowStageEditor();
                ShowMissionTimeline();
                ShowMissionEditor();
            }
        },
                                                                                                                                                  Exit: (Button button) => button.SetColor(Color.white)))));

        _stages.Add(new Button("Add Stage\nDefinition", 4, 1, container, "AddStageDefinition",
                               fontSize: 20,
                               Enter: (Button button) => button.SetColor(Color.green),
                               Stay: (Button button) =>
        {
            if (_selectedStageSet != null && Input.GetMouseButtonDown(0))
            {
                ScriptableObjects.Add(StageDefinition.Default(), _selectedStageSet);
                ShowStageDefinitions(position);
            }
        },
                               Exit: (Button button) => button.SetColor(Color.white)), true);
    }
Exemplo n.º 7
0
 private void Awake()
 {
     Instance = this;
     index    = (int)startingStage;
     if (index >= 0)
     {
         currentStage = Stages[index];
     }
 }
        public override void StartGameMode(EntityDefinition character,
                                           StageDefinition currentStage,
                                           StageCollection stageCollection = null)
        {
            base.StartGameMode(character, currentStage, stageCollection);

            playerCharacters.Add(simObjectManager.SpawnObject(character.entity, spawnPointManager.GetSpawnPoint().position, Quaternion.identity));
            playerCamera.SetLookAtTarget(playerCharacters[0].transform);
            playerCharacters[0].GetComponent <EntityManager>().Init(gameManager, playerCamera, CAF.Input.InputControlType.Direct);
        }
Exemplo n.º 9
0
        public void Test(IEnumerable <ColumnType> expected, int columns)
        {
            var definition = new StageDefinition
            {
                Columns = columns
            };
            var results = getResults(definition);

            Assert.AreEqual(expected, results);
        }
 /// <summary>
 /// Starts the gamemode.
 /// </summary>
 /// <param name="character">The character the player selected.</param>
 /// <param name="currentStage">The current stage we are on.</param>
 /// <param name="stageCollection"></param>
 public virtual void StartGameMode(EntityDefinition character, StageDefinition currentStage,
                                   StageCollection stageCollection = null)
 {
     this.stageCollection = stageCollection;
     this.currentStage    = currentStage;
     playerCamera         = Instantiate(gameManager.gameVariables.playerCameraPrefab.gameObject,
                                        spawnPointManager.GetSpawnPoint().position, Quaternion.identity)
                            .GetComponent <PlayerCamera>();
     ActivateGamemode();
 }
Exemplo n.º 11
0
 public void ShowStage(StageDefinition stageDefinition) => session.SetStage(new Stage(
                                                                                stageDefinition,
                                                                                new Player(),
                                                                                new Conveyor(
                                                                                    speed: 6,
                                                                                    width: 4,
                                                                                    height: stageDefinition.height + (stageDefinition.laneSpacing * (stageDefinition.laneCount - 1)),
                                                                                    itemInterval: 2,
                                                                                    itemLimit: 8,
                                                                                    itemWidthPadding: 1,
                                                                                    itemSpacing: 0.1f,
                                                                                    hide: true)));
Exemplo n.º 12
0
        //----------------------------------------------
        // Methods

        public void Init(StageDefinition definition, StageRenderer renderer)
        {
            m_renderer   = renderer;
            m_definition = definition;

            OnInit();

            if (m_renderer != null)
            {
                m_renderer.SetStage(this);
                m_renderer.Init();
            }
        }
Exemplo n.º 13
0
    private void UnloadStage(StageDefinition stage)
    {
        Vector2 playerPosition = PlayerController.Instance.transform.position;

        PlayerController.Instance.speed = 0;
        DOVirtual.Float(PlayerController.Instance.DownwardsPull, 0, fallInitiateTime, value => PlayerController.Instance.DownwardsPull = value).OnComplete(() =>
        {
            transition       = false;
            StageProgression = 0;
            Destroy(StoryController.Instance.gameObject);
            LoadNewStage(stage, playerPosition);
        });
    }
    public void Initialize(StageDefinition stageDefinition, PoemInstance poemInstance)
    {
        this.StageDefinition = stageDefinition;
        this.poemInstance    = poemInstance;

        this.puzzleBoard = new PuzzleBoard(this, stageDefinition, poemInstance);


        // Render the board
        foreach (PuzzleCharacter character in puzzleBoard.PuzzleCharacters)
        {
            RenderPuzzleNode(character);
        }
    }
        private void PerformTransformations(
            ConcurrentDictionary <string, object> objectCache,
            IIncludeContext includeContext,
            ServerDefinition server,
            string role,
            StageDefinition stage)
        {
            _logMessageSink.EnterBlock(sink =>
            {
                string environmentPath = Path.Combine(server.OutputPath, $"{role}.json");

                try
                {
                    sink.Message($"------------------------------------------------------------------------------------------------------\nStarting {environmentPath}");

                    TargetingInformation targetingInformation = new TargetingInformation
                    {
                        Replication = server.Replication,
                        Role        = role,
                        Stage       = stage.Stage,
                        Server      = server.Server
                    };

                    // This needs to be created per file creation thread
                    TransformationContext transformationContext = new TransformationContext();

                    // use the shared cache created in the wrapping service method to share resource reads.
                    transformationContext.Cache = objectCache;

                    PatchingTemplate template = _templateProvider.GetTemplate(transformationContext, targetingInformation.Role);
                    JArray runtimeTemplate    = JArray.Parse(template.String);

                    transformationContext.SetPluginPolicy(includeContext);
                    transformationContext.SetPluginPolicy(targetingInformation);

                    transformationContext.SetPluginPolicy(sink);

                    _transformationEngine.EvaluateMakros(transformationContext, runtimeTemplate);

                    File.WriteAllText(environmentPath, JsonConvert.SerializeObject(runtimeTemplate, Formatting.Indented));

                    sink.Message($"Finished {environmentPath}\n------------------------------------------------------------------------------------------------------");
                }
                catch (Exception e)
                {
                    sink.Error($"Error while generating {environmentPath}...\n{e.ToString()}");
                }
            });
        }
        public async void OnStageSelected(GamemodeStageDefinition stage)
        {
            StageDefinition stageDefinition = await GameManager.current.ModManager.GetStageDefinition(stage.stage);

            if (stageDefinition == null)
            {
                GameManager.current.ConsoleWindow.WriteLine($"Stage ({stage.ToString()}) not found.");
                return;
            }

            collectionInfoParent.SetActive(true);
            collectionInfoText.text = stageDefinition.stageName;
            collectionStartButton.GetComponent <EventTrigger>().RemoveAllListeners();
            collectionStartButton.GetComponent <EventTrigger>()
            .AddOnSubmitListeners((d) => { StageStartButton(stage.gamemode, stage.stage); });
        }
        public async Task <StageDefinition> GetStageDefinition(ModObjectReference stage)
        {
            stage.modIdentifier = stage.modIdentifier.ToLower();
            if (!mods.ContainsKey(stage.modIdentifier))
            {
                return(null);
            }

            StageDefinition s = await mods[stage.modIdentifier].GetStageDefinition(stage.objectName);

            if (s == null)
            {
                return(null);
            }

            return(s);
        }
Exemplo n.º 18
0
        public ColumnFlow(StageDefinition stageDefinition)
        {
            this.stageDefinition = stageDefinition;

            AutoSizeAxes = Axes.X;

            InternalChild = columns = new FillFlowContainer <Container>
            {
                RelativeSizeAxes = Axes.Y,
                AutoSizeAxes     = Axes.X,
                Direction        = FillDirection.Horizontal,
            };

            for (int i = 0; i < stageDefinition.Columns; i++)
            {
                columns.Add(new Container {
                    RelativeSizeAxes = Axes.Y
                });
            }
        }
Exemplo n.º 19
0
 void SwitchMusic(StageDefinition stage)
 {
     if (playing1)
     {
         source2.enabled = true;
         source2.clip    = stage.music;
         source2.Play();
         source1.DOFade(0, 5).OnComplete(() => source1.enabled = false);
         source2.DOFade(1, 5);
         playing1 = false;
     }
     else
     {
         source1.enabled = true;
         source1.clip    = stage.music;
         source1.Play();
         source2.DOFade(0, 5).OnComplete(() => source2.enabled = false);;
         source1.DOFade(1, 5);
         playing1 = true;
     }
 }
Exemplo n.º 20
0
        public void ConvertFrom(LegacyReplayFrame legacyFrame, IBeatmap beatmap)
        {
            // We don't need to fully convert, just create the converter
            var converter = new CrossBeatmapConverter(beatmap);

            // NB: Via co-op mod, osu-stable can have two stages with floor(col/2) and ceil(col/2) columns. This will need special handling
            // elsewhere in the game if we do choose to support the old co-op mod anyway. For now, assume that there is only one stage.

            var stage = new StageDefinition {
                Columns = converter.TargetColumns
            };

            var normalAction  = CrossAction.Key1;
            var specialAction = CrossAction.Special1;

            int activeColumns = (int)(legacyFrame.MouseX ?? 0);
            int counter       = 0;

            while (activeColumns > 0)
            {
                var isSpecial = stage.IsSpecialColumn(counter);

                if ((activeColumns & 1) > 0)
                {
                    Actions.Add(isSpecial ? specialAction : normalAction);
                }

                if (isSpecial)
                {
                    specialAction++;
                }
                else
                {
                    normalAction++;
                }

                counter++;
                activeColumns >>= 1;
            }
        }
Exemplo n.º 21
0
    private StageDefinition LoadCurrentStage()
    {
        this.StageId = GlobalStorage.CurrentStage;

        string defFileName = string.Format(@"stages/stage_{0}", this.StageId);

        Object obj = Resources.Load(defFileName);

        TextAsset textFile = Resources.Load(defFileName) as TextAsset;

        if (textFile == null)
        {
            return(null);
        }

        Debug.Log("Def file content: " + textFile.text);

        StageDefinition stageDefinition = JsonConvert.DeserializeObject <StageDefinition>(textFile.text);

        //// StageDefinition stageDefinition = BsonSerializer.Deserialize<StageDefinition>(textFile.text);
        return(stageDefinition);
    }
Exemplo n.º 22
0
    private void Transition()
    {
        Debug.Log($"Progression : {index}/{Stages.Length}");
        if (Stages.Length <= index)
        {
            return;
        }
        Debug.Log($"TRANSITION");

        currentStage = Stages[++index];
        SwitchMusic(currentStage);
        ColorManager.Instance.SwitchScheme(currentStage.colorStyle, 10, () =>
        {
            if (index != (int)Stage.Acceptance)
            {
                UnloadStage(currentStage);
            }
            else
            {
                DOVirtual.DelayedCall(currentStage.postGameTime, () => Ending());
            }
        });
    }
        public async Task <List <string> > LoadStage(ModObjectReference stage)
        {
            List <string> result = new List <string>(1);

            if (mods.TryGetValue(stage.modIdentifier, out IModDefinition mod))
            {
                StageDefinition sd = await mod.GetStageDefinition(stage.objectName);

                if (sd)
                {
                    if (mod.LocalMod)
                    {
                        result = await mod.LoadStageAsync(sd.stageIdentifier, LoadSceneMode.Additive);

                        return(result);
                    }
                    else
                    {
                        if (modLoader.loadedMods.TryGetValue(stage.modIdentifier, out ModHost modHost))
                        {
                            for (int i = 0; i < sd.sceneNames.Length; i++)
                            {
                                if (!modHost.Scenes.Exists(sd.sceneNames[i]))
                                {
                                    result.Add(null);
                                    break;
                                }
                                await modHost.Scenes.LoadAsync(sd.sceneNames[i], true);

                                result.Add(sd.sceneNames[i]);
                            }
                        }
                    }
                }
            }
            return(result);
        }
Exemplo n.º 24
0
        public ManiaStage(int firstColumnIndex, StageDefinition definition, ref ManiaAction normalColumnStartAction, ref ManiaAction specialColumnStartAction)
        {
            this.firstColumnIndex = firstColumnIndex;

            Name = "Stage";

            Anchor           = Anchor.Centre;
            Origin           = Anchor.Centre;
            RelativeSizeAxes = Axes.Y;
            AutoSizeAxes     = Axes.X;

            InternalChildren = new Drawable[]
            {
                new Container
                {
                    Anchor           = Anchor.TopCentre,
                    Origin           = Anchor.TopCentre,
                    RelativeSizeAxes = Axes.Y,
                    AutoSizeAxes     = Axes.X,
                    Children         = new Drawable[]
                    {
                        new Container
                        {
                            Name             = "Columns mask",
                            RelativeSizeAxes = Axes.Y,
                            AutoSizeAxes     = Axes.X,
                            Masking          = true,
                            CornerRadius     = 5,
                            Children         = new Drawable[]
                            {
                                new Box
                                {
                                    Name             = "Background",
                                    RelativeSizeAxes = Axes.Both,
                                    Colour           = Color4.Black
                                },
                                columnFlow = new FillFlowContainer <Column>
                                {
                                    Name             = "Columns",
                                    RelativeSizeAxes = Axes.Y,
                                    AutoSizeAxes     = Axes.X,
                                    Direction        = FillDirection.Horizontal,
                                    Padding          = new MarginPadding {
                                        Left = COLUMN_SPACING, Right = COLUMN_SPACING
                                    },
                                    Spacing = new Vector2(COLUMN_SPACING, 0)
                                },
                            }
                        },
                        new Container
                        {
                            Name               = "Barlines mask",
                            Anchor             = Anchor.TopCentre,
                            Origin             = Anchor.TopCentre,
                            RelativeSizeAxes   = Axes.Y,
                            Width              = 1366, // Bar lines should only be masked on the vertical axis
                            BypassAutoSizeAxes = Axes.Both,
                            Masking            = true,
                            Child              = barLineContainer = new Container
                            {
                                Name             = "Bar lines",
                                Anchor           = Anchor.TopCentre,
                                Origin           = Anchor.TopCentre,
                                RelativeSizeAxes = Axes.Y,
                                Child            = HitObjectContainer
                            }
                        },
                        judgements = new JudgementContainer <DrawableManiaJudgement>
                        {
                            Anchor           = Anchor.TopCentre,
                            Origin           = Anchor.Centre,
                            RelativeSizeAxes = Axes.Both,
                            Y = HIT_TARGET_POSITION + 150,
                        },
                        topLevelContainer = new Container {
                            RelativeSizeAxes = Axes.Both
                        }
                    }
                }
            };

            for (int i = 0; i < definition.Columns; i++)
            {
                var isSpecial = definition.IsSpecialColumn(i);
                var column    = new Column(firstColumnIndex + i)
                {
                    IsSpecial = isSpecial,
                    Action    = { Value = isSpecial ? specialColumnStartAction++ : normalColumnStartAction++ }
                };

                AddColumn(column);
            }

            Direction.BindValueChanged(dir =>
            {
                barLineContainer.Padding = new MarginPadding
                {
                    Top    = dir.NewValue == ScrollingDirection.Up ? HIT_TARGET_POSITION : 0,
                    Bottom = dir.NewValue == ScrollingDirection.Down ? HIT_TARGET_POSITION : 0,
                };
            }, true);
        }
Exemplo n.º 25
0
        public CrossStage(int firstColumnIndex, StageDefinition definition, ref CrossAction normalColumnStartAction, ref CrossAction specialColumnStartAction)
        {
            this.firstColumnIndex = firstColumnIndex;

            Name = "Stage";

            Anchor           = Anchor.Centre;
            Origin           = Anchor.Centre;
            RelativeSizeAxes = Axes.Y;
            AutoSizeAxes     = Axes.X;

            InternalChildren = new Drawable[]
            {
                new Container
                {
                    Anchor           = Anchor.TopCentre,
                    Origin           = Anchor.TopCentre,
                    RelativeSizeAxes = Axes.Y,
                    AutoSizeAxes     = Axes.X,
                    Children         = new Drawable[]
                    {
                        new Container
                        {
                            Name             = "Columns mask",
                            RelativeSizeAxes = Axes.Y,
                            AutoSizeAxes     = Axes.X,
                            Masking          = true,
                            CornerRadius     = 5,
                            Children         = new Drawable[]
                            {
                                new Box
                                {
                                    Name             = "Background",
                                    RelativeSizeAxes = Axes.Both,
                                    Colour           = Color4.Black
                                },
                                columnFlow = new Container <Column>
                                {
                                    Name             = "Columns",
                                    RelativeSizeAxes = Axes.Y,
                                    AutoSizeAxes     = Axes.X,
                                    Padding          = new MarginPadding {
                                        Left = COLUMN_SPACING, Right = COLUMN_SPACING
                                    },
                                },
                            }
                        },
                        judgements = new JudgementContainer <DrawableCrossJudgement>
                        {
                            Anchor             = Anchor.TopCentre,
                            Origin             = Anchor.Centre,
                            AutoSizeAxes       = Axes.Both,
                            Y                  = HIT_TARGET_POSITION + 150,
                            BypassAutoSizeAxes = Axes.Both
                        },
                        topLevelContainer = new Container {
                            RelativeSizeAxes = Axes.Both
                        }
                    }
                }
            };

            for (int i = 0; i < definition.Columns; i++)
            {
                var isSpecial = definition.IsSpecialColumn(i);
                var column    = new Column(firstColumnIndex + i)
                {
                    IsSpecial = isSpecial,
                    Action    = { Value = isSpecial ? specialColumnStartAction++ : normalColumnStartAction++ }
                };

                AddColumn(column);
            }
        }
Exemplo n.º 26
0
 public LegacyStageBackground(StageDefinition stageDefinition)
 {
     this.stageDefinition = stageDefinition;
     RelativeSizeAxes     = Axes.Both;
 }
Exemplo n.º 27
0
        public ManiaStage(int firstColumnIndex, StageDefinition definition, ref ManiaAction normalColumnStartAction, ref ManiaAction specialColumnStartAction)
            : base(ScrollingDirection.Up)
        {
            this.firstColumnIndex = firstColumnIndex;

            Name = "Stage";

            Anchor           = Anchor.Centre;
            Origin           = Anchor.Centre;
            RelativeSizeAxes = Axes.Y;
            AutoSizeAxes     = Axes.X;

            InternalChildren = new Drawable[]
            {
                new Container
                {
                    Anchor           = Anchor.TopCentre,
                    Origin           = Anchor.TopCentre,
                    RelativeSizeAxes = Axes.Y,
                    AutoSizeAxes     = Axes.X,
                    Children         = new Drawable[]
                    {
                        new Container
                        {
                            Name             = "Columns mask",
                            RelativeSizeAxes = Axes.Y,
                            AutoSizeAxes     = Axes.X,
                            Masking          = true,
                            Children         = new Drawable[]
                            {
                                new Box
                                {
                                    Name             = "Background",
                                    RelativeSizeAxes = Axes.Both,
                                    Colour           = Color4.Black
                                },
                                columnFlow = new FillFlowContainer <Column>
                                {
                                    Name             = "Columns",
                                    RelativeSizeAxes = Axes.Y,
                                    AutoSizeAxes     = Axes.X,
                                    Direction        = FillDirection.Horizontal,
                                    Padding          = new MarginPadding {
                                        Left = 1, Right = 1
                                    },
                                    Spacing = new Vector2(1, 0)
                                },
                            }
                        },
                        new Container
                        {
                            Name               = "Barlines mask",
                            Anchor             = Anchor.TopCentre,
                            Origin             = Anchor.TopCentre,
                            RelativeSizeAxes   = Axes.Y,
                            Width              = 1366, // Bar lines should only be masked on the vertical axis
                            BypassAutoSizeAxes = Axes.Both,
                            Masking            = true,
                            Child              = content = new Container
                            {
                                Name             = "Bar lines",
                                Anchor           = Anchor.TopCentre,
                                Origin           = Anchor.TopCentre,
                                RelativeSizeAxes = Axes.Y,
                                Padding          = new MarginPadding {
                                    Top = HIT_TARGET_POSITION
                                }
                            }
                        },
                        judgements = new JudgementContainer <DrawableManiaJudgement>
                        {
                            Anchor             = Anchor.TopCentre,
                            Origin             = Anchor.Centre,
                            AutoSizeAxes       = Axes.Both,
                            Y                  = HIT_TARGET_POSITION + 150,
                            BypassAutoSizeAxes = Axes.Both
                        },
                        topLevelContainer = new Container {
                            RelativeSizeAxes = Axes.Both
                        }
                    }
                }
            };

            for (int i = 0; i < definition.Columns; i++)
            {
                var isSpecial = definition.IsSpecialColumn(i);
                var column    = new Column
                {
                    IsSpecial = isSpecial,
                    Action    = isSpecial ? specialColumnStartAction++ : normalColumnStartAction++
                };

                AddColumn(column);
            }

            Inverted.ValueChanged += invertedChanged;
            Inverted.TriggerChange();
        }
Exemplo n.º 28
0
        public ManiaStage(int firstColumnIndex, StageDefinition definition, ref ManiaAction normalColumnStartAction, ref ManiaAction specialColumnStartAction)
        {
            this.firstColumnIndex = firstColumnIndex;

            Name = "Stage";

            Anchor           = Anchor.Centre;
            Origin           = Anchor.Centre;
            RelativeSizeAxes = Axes.Y;
            AutoSizeAxes     = Axes.X;

            InternalChildren = new Drawable[]
            {
                new Container
                {
                    Anchor           = Anchor.TopCentre,
                    Origin           = Anchor.TopCentre,
                    RelativeSizeAxes = Axes.Y,
                    AutoSizeAxes     = Axes.X,
                    Children         = new Drawable[]
                    {
                        new Box
                        {
                            Name             = "Background",
                            RelativeSizeAxes = Axes.Both,
                            Colour           = Color4.Black
                        },
                        columnFlow = new FillFlowContainer <Column>
                        {
                            Name             = "Columns",
                            RelativeSizeAxes = Axes.Y,
                            AutoSizeAxes     = Axes.X,
                            Direction        = FillDirection.Horizontal,
                            Padding          = new MarginPadding {
                                Left = COLUMN_SPACING, Right = COLUMN_SPACING
                            },
                        },
                        new Container
                        {
                            Name               = "Barlines mask",
                            Anchor             = Anchor.TopCentre,
                            Origin             = Anchor.TopCentre,
                            RelativeSizeAxes   = Axes.Y,
                            Width              = 1366, // Bar lines should only be masked on the vertical axis
                            BypassAutoSizeAxes = Axes.Both,
                            Masking            = true,
                            Child              = barLineContainer = new HitObjectArea(HitObjectContainer)
                            {
                                Name             = "Bar lines",
                                Anchor           = Anchor.TopCentre,
                                Origin           = Anchor.TopCentre,
                                RelativeSizeAxes = Axes.Y,
                            }
                        },
                        judgements = new JudgementContainer <DrawableManiaJudgement>
                        {
                            Anchor           = Anchor.TopCentre,
                            Origin           = Anchor.Centre,
                            RelativeSizeAxes = Axes.Both,
                            Y = HIT_TARGET_POSITION + 150,
                        },
                        topLevelContainer = new Container {
                            RelativeSizeAxes = Axes.Both
                        }
                    }
                }
            };

            for (int i = 0; i < definition.Columns; i++)
            {
                var columnType = definition.GetTypeOfColumn(i);
                var column     = new Column(firstColumnIndex + i)
                {
                    ColumnType   = columnType,
                    AccentColour = columnColours[columnType],
                    Action       = { Value = columnType == ColumnType.Special ? specialColumnStartAction++ : normalColumnStartAction++ }
                };

                AddColumn(column);
            }
        }
Exemplo n.º 29
0
        public Stage(int firstColumnIndex, StageDefinition definition, ref ManiaAction normalColumnStartAction, ref ManiaAction specialColumnStartAction)
        {
            this.firstColumnIndex = firstColumnIndex;

            Name = "Stage";

            Anchor           = Anchor.Centre;
            Origin           = Anchor.Centre;
            RelativeSizeAxes = Axes.Y;
            AutoSizeAxes     = Axes.X;

            Container topLevelContainer;

            InternalChildren = new Drawable[]
            {
                judgementPool = new DrawablePool <DrawableManiaJudgement>(2),
                new Container
                {
                    Anchor           = Anchor.TopCentre,
                    Origin           = Anchor.TopCentre,
                    RelativeSizeAxes = Axes.Y,
                    AutoSizeAxes     = Axes.X,
                    Children         = new Drawable[]
                    {
                        new SkinnableDrawable(new ManiaSkinComponent(ManiaSkinComponents.StageBackground, stageDefinition: definition), _ => new DefaultStageBackground())
                        {
                            RelativeSizeAxes = Axes.Both
                        },
                        columnFlow = new ColumnFlow <Column>(definition)
                        {
                            RelativeSizeAxes = Axes.Y,
                        },
                        new Container
                        {
                            Name               = "Barlines mask",
                            Anchor             = Anchor.TopCentre,
                            Origin             = Anchor.TopCentre,
                            RelativeSizeAxes   = Axes.Y,
                            Width              = 1366, // Bar lines should only be masked on the vertical axis
                            BypassAutoSizeAxes = Axes.Both,
                            Masking            = true,
                            Child              = barLineContainer = new HitObjectArea(HitObjectContainer)
                            {
                                Name             = "Bar lines",
                                Anchor           = Anchor.TopCentre,
                                Origin           = Anchor.TopCentre,
                                RelativeSizeAxes = Axes.Y,
                            }
                        },
                        new SkinnableDrawable(new ManiaSkinComponent(ManiaSkinComponents.StageForeground, stageDefinition: definition), _ => null)
                        {
                            RelativeSizeAxes = Axes.Both
                        },
                        judgements = new JudgementContainer <DrawableManiaJudgement>
                        {
                            Anchor           = Anchor.TopCentre,
                            Origin           = Anchor.Centre,
                            RelativeSizeAxes = Axes.Both,
                            Y = HIT_TARGET_POSITION + 150
                        },
                        topLevelContainer = new Container {
                            RelativeSizeAxes = Axes.Both
                        }
                    }
                }
            };

            for (int i = 0; i < definition.Columns; i++)
            {
                var columnType = definition.GetTypeOfColumn(i);

                var column = new Column(firstColumnIndex + i)
                {
                    RelativeSizeAxes = Axes.Both,
                    Width            = 1,
                    ColumnType       = columnType,
                    AccentColour     = columnColours[columnType],
                    Action           = { Value = columnType == ColumnType.Special ? specialColumnStartAction++ : normalColumnStartAction++ }
                };

                topLevelContainer.Add(column.TopLevelContainer.CreateProxy());
                columnFlow.SetContentForColumn(i, column);
                AddNested(column);
            }
        }
Exemplo n.º 30
0
 private void Awake()
 {
     stage      = StoryManager.Instance.currentStage;
     Instance   = this;
     Monologues = new List <StageDefinition.Monologue>(stage.Monologues);
 }