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); } }
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); }