Exemple #1
0
        private void SpawnOrb(LevelNode me, int cycle)
        {
            if (!NextLinkedNodes.Any())
            {
                return;
            }
            if (!MainGame.Inst.Profile.EffectsEnabled)
            {
                return;
            }

            FractionDifficulty d = FractionDifficulty.NEUTRAL;

            switch (cycle % 4)
            {
            case 0: d = FractionDifficulty.DIFF_0; break;

            case 1: d = FractionDifficulty.DIFF_1; break;

            case 2: d = FractionDifficulty.DIFF_2; break;

            case 3: d = FractionDifficulty.DIFF_3; break;

            default:
                SAMLog.Error("LN::EnumSwitch_SO", "value: " + (cycle % 4));
                break;
            }

            if (!LevelData.HasCompletedOrBetter(d))
            {
                d = FractionDifficulty.NEUTRAL;
            }

            foreach (var t in OutgoingPipes)
            {
                if (!((GameEntity)t.NodeSource).IsInViewport && !((GameEntity)t.NodeSink).IsInViewport)
                {
                    return;
                }

                var orb = new ConnectionOrb(Owner, t, d);

                Manager.AddEntity(orb);
            }
        }
Exemple #2
0
        private void InitEntities(GraphBlueprint g)
        {
            foreach (var bpNode in g.LevelNodes)
            {
                LevelBlueprint f;
                if (Levels.LEVELS.TryGetValue(bpNode.LevelID, out f))
                {
                    var data = MainGame.Inst.Profile.GetLevelData(f.UniqueID);
                    var pos  = new FPoint(bpNode.X, bpNode.Y);

                    var node = new LevelNode(screen, pos, f, data);

                    screen.Entities.AddEntity(node);
                    Nodes.Add(node);
                }
                else
                {
                    SAMLog.Error("LevelGraph::IE", $"Cannot find id {bpNode.LevelID:B} for graph");
                }
            }

            foreach (var bpNode in g.WarpNodes)
            {
                if (bpNode.TargetWorld == Levels.WORLD_ID_GAMEEND)
                {
                    var node = new WarpGameEndNode(screen, bpNode);
                    screen.Entities.AddEntity(node);
                    Nodes.Add(node);
                }
                else
                {
                    var node = new WarpNode(screen, bpNode);
                    screen.Entities.AddEntity(node);
                    Nodes.Add(node);
                }
            }

            InitialNode = new RootNode(screen, g.RootNode);
            screen.Entities.AddEntity(InitialNode);
            Nodes.Add(InitialNode);
        }