Beispiel #1
0
    private void LoadMap()
    {
        MapData md = Utils.Load <MapData>("mapdata");

        OverworldTrain.Instance.CurrentNode = _tracks
                                              .Find(md.PlayerNodeID.Substring(0, 1)).transform.Find(md.PlayerNodeID.Substring(1, 1))
                                              .GetComponent <MapNode>();
        OverworldTrain.Instance.SnapToNode();

        //Create
        foreach (var e in md.Enemies)
        {
            if (!MapDirectory.ContainsKey(e.NodeID))
            {
                EnemyMapObstacle newEnemy = Instantiate(Resources.Load <GameObject>("Prefabs/Map/EnemyInteractable"), _map)
                                            .GetComponent <EnemyMapObstacle>();
                newEnemy.Node = _tracks
                                .Find(e.NodeID.Substring(0, 1)).transform.Find(e.NodeID.Substring(1, 1))
                                .GetComponent <MapNode>();
                newEnemy.MyScene = e.SceneName;
                MapDirectory.Add(e.NodeID, new DirectoryEntry(newEnemy.gameObject, true));
            }
        }

        foreach (var i in md.InteractableLocations)
        {
            if (!MapDirectory.ContainsKey(i))
            {
                MapInteractable newInteractable = Instantiate(Resources.Load <GameObject>("Prefabs/Map/Interactable"), _map)
                                                  .GetComponent <MapInteractable>();
                newInteractable.Node = _tracks
                                       .Find(i.Substring(0, 1)).transform.Find(i.Substring(1, 1))
                                       .GetComponent <MapNode>();
                MapDirectory.Add(i, new DirectoryEntry(newInteractable.gameObject, false));
            }
        }

        //Destroy!
        foreach (var d in MapDirectory)
        {
            if (!d.Value.IsEnemy)
            {
                continue;
            }
            bool found = false;
            foreach (var e in md.Enemies)
            {
                if (e.NodeID == d.Key)
                {
                    found = true;
                }
            }

            if (!found)
            {
                Destroy(d.Value.gameObject);
            }
        }
    }
Beispiel #2
0
 public bool HasObstacle()
 {
     GameObject[] interactables = GameObject.FindGameObjectsWithTag("OverworldInteractable");
     foreach (var i in interactables)
     {
         MapInteractable interactable = i.GetComponent <MapInteractable>();
         //Is it ours?
         if (interactable.Node.NodeID != NodeID)
         {
             continue;
         }
         //Is it an obstacle?
         //Do we have to stop here?
         if (!interactable.AllowPass)
         {
             return(true);
         }
     }
     return(false);
 }
Beispiel #3
0
        public CathedralRuinsFBoss()
        {
            maxBounds = new Rectangle(0, 0, 10000, 10000);
            ContentManager Content = Game.GameContent;

            BackgroundLayer = new MapObject[]
            {
            };
            InteractableLayer = new MapInteractable[]
            {
                new MapInteractable(TextureHelper.Blank(Color.LightGreen), new Vector2(600, 2500), 50, 50, false, () => {
                    List <AnimatedSprite> sp = CollisionDetection.GetNearby(new Rectangle(600, 2500, 50, 50), 100);
                    foreach (AnimatedSprite i in sp)
                    {
                        i.Buffs.AddBuff(new RegenerationBuff(GameMathHelper.TimeToFrames(2), 10, i));
                    }
                }),

                new MapInteractable(TextureHelper.Blank(Color.Orange), new Vector2(500, 2800), 50, 50, false, () => {
                    List <AnimatedSprite> sp = CollisionDetection.GetNearby(new Rectangle(500, 2800, 50, 50), 100);
                    if (sp.Contains(Game.PlayerCharacter))
                    {
                        Game.PlayerCharacter.Buffs.AddBuff(new AttackSpeedBuff(-1, 5));
                        sp.Clear();
                    }
                }),

                new MapInteractable(TextureHelper.Blank(Color.LightBlue), new Vector2(600, 2800), 50, 50, true, () => {
                    List <AnimatedSprite> sp = CollisionDetection.GetNearby(new Rectangle(600, 2800, 50, 50), 100);
                    if (sp.Contains(Game.PlayerCharacter))
                    {
                        Game.PlayerCharacter.Buffs.AddBuff(new SpeedBuff(GameMathHelper.TimeToFrames(10), 2, Game.PlayerCharacter));
                    }
                }),

                new MapInteractable(TextureHelper.Blank(Color.White), new Vector2(700, 2800), 50, 50, true, () => {
                    AnimatedSprite temp;
                    temp = new AnimatedSprite(TextureHelper.Sprites.EnemySprite, 1, 1, 700, 2800,
                                              new BasicAI(Game.PlayerCharacter), new DefaultManager(10));
                    temp.AI.SupplyAI(temp);
                    temp.Load();
                    temp.SpriteRectangle.Width  = 50;
                    temp.SpriteRectangle.Height = 50;
                    RenderHandler.allCharacterSprites.Add(temp);
                }),

                new MapInteractable(TextureHelper.Blank(Color.DeepSkyBlue), new Vector2(800, 2800), 50, 50, true, () => {
                    List <AnimatedSprite> sp = CollisionDetection.GetNearby(new Rectangle(800, 2800, 50, 50), 100);
                    foreach (AnimatedSprite i in sp)
                    {
                        i.Buffs.AddBuff(new WindyBuff(GameMathHelper.TimeToFrames(10), 10, i));
                    }
                })
            };
            ActiveLayer = new MapObject[]
            {
                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(0, 0), 1600, 100),
                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(0, 0), 100, 500),
                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(0, 500), 800, 100),
                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(1200, 500), 500, 100),
                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(1600, 0), 100, 500),

                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(700, 600), 100, 1000),
                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(1200, 600), 100, 1000),

                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(0, 1600), 800, 100),
                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(1200, 1600), 600, 100),
                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(0, 1600), 100, 1500),
                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(1700, 1600), 100, 900),
                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(1700, 2800), 100, 300),
                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(0, 3100), 1800, 100),
                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(300, 2925), 1400, 50),
                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(100, 2600), 700, 50),
                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(1000, 2750), 400, 50),
                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(300, 2200), 1200, 50),

                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(1800, 2800), 800, 100),
                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(1800, 2400), 800, 100),

                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(2600, 2800), 100, 300),
                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(2600, 3100), 400, 100),
                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(3200, 3100), 400, 100),
                new MapObject(TextureHelper.Blank(Color.DarkGray), new Vector2(3600, 1200), 100, 2000),
            };
            ForegroundLayer = new MapObject[]
            {
            };
        }