Esempio n. 1
0
        public virtual void Draw(SpriteBatch spriteBatch)
        {
            foreach (Tile t in tiles)
            {
                t.Draw(spriteBatch);
            }

            player.Draw(spriteBatch);
            foreach (Entity e in entityList)
            {
                e.Draw(spriteBatch);
            }

            spriteBatch.Draw(Archive.textureDictionary["uiWorld"], Vector2.Zero, Color.White);
            tabManager.Draw(spriteBatch);

            foreach (Entity e in entityList)
            {
                if (e is FriendlyEntity)
                {
                    FriendlyEntity npc = (FriendlyEntity)e;
                    if (npc.CanTalk(player))
                    {
                        npc.dialog.Draw(spriteBatch, new Vector2(740, 957));
                    }
                }
            }
        }
Esempio n. 2
0
 public static void WriteMap(string mapname, Tile[,] tileArray, Entity[,] entityArray, string zoneName)
 {
     using (StreamWriter sw = File.CreateText(mapname))
     {
         sw.WriteLine("zone;" + zoneName);
         for (int i = 0; i < tileArray.GetLength(0); i++)
         {
             for (int j = 0; j < tileArray.GetLength(1); j++)
             {
                 var textureArchiveName = Archive.textureDictionary.FirstOrDefault(x => x.Value == tileArray[i, j].texture).Key;
                 sw.WriteLine("tile;" + textureArchiveName + ";" + tileArray[i, j].position.X + ";" + tileArray[i, j].position.Y + ";" + tileArray[i, j].Wall);
             }
         }
         for (int i = 0; i < entityArray.GetLength(0); i++)
         {
             for (int j = 0; j < entityArray.GetLength(1); j++)
             {
                 if (entityArray[i, j] != null)
                 {
                     var textureArchiveName = Archive.textureDictionary.FirstOrDefault(x => x.Value == entityArray[i, j].texture).Key;
                     if (entityArray[i, j] is Player)
                     {
                         sw.WriteLine("player;" + textureArchiveName + ";" + entityArray[i, j].position.X + ";" + entityArray[i, j].position.Y);
                     }
                     else if (entityArray[i, j] is Enemy)
                     {
                         Enemy enemy    = (Enemy)entityArray[i, j];
                         var   teamName = CombatTeamDatabase.teamDictionary.FirstOrDefault(x => x.Value.ID == enemy.team.ID).Key;
                         sw.WriteLine("enemy;" + textureArchiveName + ";" + entityArray[i, j].position.X + ";" + entityArray[i, j].position.Y + ";" + teamName);
                     }
                     else if (entityArray[i, j] is FriendlyEntity)
                     {
                         FriendlyEntity npc        = (FriendlyEntity)entityArray[i, j];
                         var            dialogName = DialogDictionary.dialogDictionary.FirstOrDefault(x => x.Value == npc.dialog).Key;
                         sw.WriteLine("friendly;" + textureArchiveName + ";" + entityArray[i, j].position.X + ";" + entityArray[i, j].position.Y + ";" + dialogName);
                     }
                     else if (entityArray[i, j] is ItemEntity)
                     {
                         ItemEntity item     = (ItemEntity)entityArray[i, j];
                         var        itemName = ItemDatabase.items.FirstOrDefault(x => x.Value == item.containedItem).Key;
                         sw.WriteLine("item;" + textureArchiveName + ";" + entityArray[i, j].position.X + ";" + entityArray[i, j].position.Y + ";" + itemName);
                     }
                     else if (entityArray[i, j] is PortalEntity)
                     {
                         PortalEntity portal = (PortalEntity)entityArray[i, j];
                         sw.WriteLine("portal;" + textureArchiveName + ";" + entityArray[i, j].position.X + ";" + entityArray[i, j].position.Y + ";" +
                                      portal.zoneName + ";" + portal.spawnPosition.X + ";" + portal.spawnPosition.Y);
                     }
                 }
             }
         }
     }
 }
Esempio n. 3
0
        public void Update(GameTime gameTime)
        {
            tabManager.Update(gameTime);
            player.Update(gameTime);

            foreach (Entity e in entityList)
            {
                if (e is FriendlyEntity)
                {
                    FriendlyEntity npc = (FriendlyEntity)e;
                    if (npc.CanTalk(player))
                    {
                        npc.dialog.Update(this);
                    }
                    else
                    {
                        npc.dialog.StopTalking();
                    }
                }
            }

            for (int i = entityList.Count() - 1; i >= 0; i--)
            {
                if (entityList[i] is ItemEntity)
                {
                    ItemEntity itemEntity = (ItemEntity)entityList[i];
                    if (player.PickUpItem(itemEntity))
                    {
                        Archive.soundEffectDictionary["pickUp"].Play();
                        entityList.RemoveAt(i);
                        foreach (Quest q in tabManager.questTab.questSystem.quests)
                        {
                            foreach (Objective o in q.objectives)
                            {
                                if (o is ItemObjective)
                                {
                                    ItemObjective oItem = (ItemObjective)o;
                                    oItem.CompareItem(itemEntity.containedItem.ID);
                                }
                            }
                        }
                    }
                }
            }
        }
Esempio n. 4
0
        public void LoadMap(string path)
        {
            Map loadedMap = FileReader.ReadMap(path);

            tileArray   = loadedMap.tiles;
            entityArray = new Entity[46, 26];
            zoneName    = loadedMap.zoneName;

            foreach (Entity e in loadedMap.entityList)
            {
                int XValue = (int)(e.position.X / tileSize);
                int YValue = (int)(e.position.Y / tileSize);

                if (e is Enemy)
                {
                    entityArray[XValue, YValue]         = new Enemy(e.texture, new Vector2(XValue * tileSize + tileGridOffset.X, YValue * tileSize + tileGridOffset.Y));
                    entityArray[XValue, YValue].team.ID = e.team.ID;
                }
                else if (e is FriendlyEntity)
                {
                    FriendlyEntity f = (FriendlyEntity)e;
                    entityArray[XValue, YValue] = new FriendlyEntity(e.texture, new Vector2(XValue * tileSize + tileGridOffset.X, YValue * tileSize + tileGridOffset.Y),
                                                                     f.dialog);
                }
                else if (e is ItemEntity)
                {
                    ItemEntity i = (ItemEntity)e;
                    entityArray[XValue, YValue] = new ItemEntity(e.texture, new Vector2(XValue * tileSize + tileGridOffset.X, YValue * tileSize + tileGridOffset.Y),
                                                                 i.containedItem);
                }
                else if (e is PortalEntity)
                {
                    PortalEntity i = (PortalEntity)e;
                    entityArray[XValue, YValue] = new PortalEntity(e.texture, new Vector2(XValue * tileSize + tileGridOffset.X, YValue * tileSize + tileGridOffset.Y),
                                                                   i.zoneName, i.spawnPosition);
                }
            }

            if (loadedMap.player != null)
            {
                int XValue = (int)(loadedMap.player.position.X / tileSize);
                int YValue = (int)(loadedMap.player.position.Y / tileSize);
                entityArray[XValue, YValue] = new Player(loadedMap.player.animation.texture, new Vector2(XValue * tileSize + tileGridOffset.X, YValue * tileSize + tileGridOffset.Y), new List <Item>());
            }
        }
Esempio n. 5
0
        protected void PlaceTile()
        {
            int XValue = (int)((KeyMouseReader.mousePosition.X - tileGridOffset.X) / tileSize);
            int YValue = (int)((KeyMouseReader.mousePosition.Y - tileGridOffset.Y) / tileSize);

            if (KeyMouseReader.mouseState.LeftButton == ButtonState.Pressed)
            {
                if (selectedTileType == 0 || selectedTileType == 1)
                {
                    if ((XValue >= 0 && XValue < entityArray.GetLength(0)) &&
                        (YValue >= 0 && YValue < entityArray.GetLength(1)))
                    {
                        if (selectedTileType == 0)
                        {
                            tileArray[XValue, YValue] = new Tile(selectedTile.texture, new Vector2(XValue * tileSize + tileGridOffset.X, YValue * tileSize + tileGridOffset.Y), false);
                        }
                        if (selectedTileType == 1)
                        {
                            tileArray[XValue, YValue] = new Tile(selectedTile.texture, new Vector2(XValue * tileSize + tileGridOffset.X, YValue * tileSize + tileGridOffset.Y), true);
                        }
                    }
                }
                else if (selectedTileType == 2 || selectedTileType == 3 || selectedTileType == 4)
                {
                    if ((XValue >= 0 && XValue < entityArray.GetLength(0)) &&
                        (YValue >= 0 && YValue < entityArray.GetLength(1)))
                    {
                        if (selectedEntity is Player)
                        {
                            entityArray[XValue, YValue] = new Player(selectedEntity.texture, new Vector2(XValue * tileSize + tileGridOffset.X, YValue * tileSize + tileGridOffset.Y), new List <Item>());
                        }
                        else if (selectedEntity is Enemy)
                        {
                            string indexName = Prompt.ShowEnemySelector();
                            if (indexName != "")
                            {
                                entityArray[XValue, YValue]      = new Enemy(selectedEntity.texture, new Vector2(XValue * tileSize + tileGridOffset.X, YValue * tileSize + tileGridOffset.Y));
                                entityArray[XValue, YValue].team = CombatTeamDatabase.GetTeam(indexName);
                            }
                        }
                        else if (selectedEntity is FriendlyEntity)
                        {
                            string indexName = Prompt.ShowDialogSelector();
                            if (indexName != "")
                            {
                                entityArray[XValue, YValue] = new FriendlyEntity(selectedEntity.texture, new Vector2(XValue * tileSize + tileGridOffset.X, YValue * tileSize + tileGridOffset.Y),
                                                                                 DialogDictionary.dialogDictionary[indexName]);
                            }
                        }
                        else if (selectedEntity is ItemEntity)
                        {
                            string indexName = Prompt.ShowItemSelector();
                            if (indexName != "")
                            {
                                entityArray[XValue, YValue] = new ItemEntity(selectedEntity.texture, new Vector2(XValue * tileSize + tileGridOffset.X, YValue * tileSize + tileGridOffset.Y),
                                                                             ItemDatabase.items[indexName]);
                            }
                        }
                        else if (selectedEntity is PortalEntity)
                        {
                            if (XValue == 0)
                            {
                                entityArray[XValue, YValue] = new PortalEntity(selectedEntity.texture, new Vector2(XValue * tileSize + tileGridOffset.X, YValue * tileSize + tileGridOffset.Y),
                                                                               selectedPortalLocation, new Vector2((entityArray.GetLength(0) - 2) * tileSize, YValue * tileSize));
                            }
                            else if (XValue == (entityArray.GetLength(0) - 1))
                            {
                                entityArray[XValue, YValue] = new PortalEntity(selectedEntity.texture, new Vector2(XValue * tileSize + tileGridOffset.X, YValue * tileSize + tileGridOffset.Y),
                                                                               selectedPortalLocation, new Vector2(tileSize, YValue * tileSize));
                            }
                            else if (YValue == 0)
                            {
                                entityArray[XValue, YValue] = new PortalEntity(selectedEntity.texture, new Vector2(XValue * tileSize + tileGridOffset.X, YValue * tileSize + tileGridOffset.Y),
                                                                               selectedPortalLocation, new Vector2(XValue * tileSize, (entityArray.GetLength(1) - 2) * tileSize));
                            }
                            else if (YValue == (entityArray.GetLength(1) - 1))
                            {
                                entityArray[XValue, YValue] = new PortalEntity(selectedEntity.texture, new Vector2(XValue * tileSize + tileGridOffset.X, YValue * tileSize + tileGridOffset.Y),
                                                                               selectedPortalLocation, new Vector2(XValue * tileSize, tileSize));
                            }
                            else
                            {
                                string tempString = Interaction.InputBox("Input coordinate X", "Data text", "0");
                                if (tempString != "")
                                {
                                    int xCoordinate = Int32.Parse(tempString);
                                    tempString = "";
                                    tempString = Interaction.InputBox("Input coordinate Y", "Data text", "0");
                                    if (tempString != "")
                                    {
                                        int yCoordinate = Int32.Parse(tempString);
                                        entityArray[XValue, YValue] = new PortalEntity(selectedEntity.texture, new Vector2(XValue * tileSize + tileGridOffset.X, YValue * tileSize + tileGridOffset.Y),
                                                                                       selectedPortalLocation, new Vector2((float)xCoordinate * tileSize, (float)yCoordinate * tileSize));
                                    }
                                }
                            }
                        }
                    }
                }
            }
            else if (KeyMouseReader.mouseState.RightButton == ButtonState.Pressed)
            {
                if (selectedTileType == 2 || selectedTileType == 3 || selectedTileType == 4)
                {
                    if ((XValue >= 0 && XValue < entityArray.GetLength(0)) &&
                        (YValue >= 0 && YValue < entityArray.GetLength(1)))
                    {
                        entityArray[XValue, YValue] = null;
                    }
                }
            }
        }
Esempio n. 6
0
        public static Map ReadMap(string mapname)
        {
            List <string> strings      = new List <string>();
            StreamReader  streamReader = new StreamReader(mapname);
            Map           map          = new Map();

            Tile[,] mapGrid = new Tile[46, 26];

            while (!streamReader.EndOfStream)
            {
                string   mapValue    = streamReader.ReadLine();
                string[] stringArray = mapValue.Split(';');

                if (stringArray[0] != "zone")
                {
                    int       xPosition = Int32.Parse(stringArray[2]);
                    int       yPosition = Int32.Parse(stringArray[3]);
                    Vector2   position  = new Vector2(Int32.Parse(stringArray[2]), Int32.Parse(stringArray[3]));
                    Texture2D texture   = Archive.textureDictionary[stringArray[1]];

                    switch (stringArray[0])
                    {
                    case "tile":
                        bool isWallTile = bool.Parse(stringArray[4]);
                        mapGrid[xPosition / 32, yPosition / 32] = new Tile(texture, position, isWallTile);
                        break;

                    case "item":
                        string     itemName = stringArray[4];
                        ItemEntity item     = new ItemEntity(texture, position, ItemDatabase.items[itemName]);
                        map.entityList.Add(item);
                        break;

                    case "player":
                        map.player = new Player(texture, new Vector2(xPosition, yPosition), new List <Item>());
                        map.player.team.characters.Add(new Character(Archive.textureDictionary["warriorCombat"], Archive.textureDictionary["warriorCombatOutline"],
                                                                     Vector2.Zero, true, "Warrior", 100, 10, 5, 6, 15, 10, 100, 5, 70));
                        map.player.map = map;
                        break;

                    case "enemy":
                        string teamName = stringArray[4];
                        Enemy  enemy    = new Enemy(texture, new Vector2(xPosition, yPosition));
                        enemy.team = CombatTeamDatabase.GetTeam(teamName);
                        map.entityList.Add(enemy);
                        break;

                    case "friendly":
                        string         questName = stringArray[4];
                        FriendlyEntity friendly  = new FriendlyEntity(texture, new Vector2(xPosition, yPosition), DialogDictionary.dialogDictionary[questName]);
                        map.entityList.Add(friendly);
                        break;

                    case "portal":
                        string       zoneName = stringArray[4];
                        int          spawnX   = Int32.Parse(stringArray[5]);
                        int          spawnY   = Int32.Parse(stringArray[6]);
                        PortalEntity portal   = new PortalEntity(texture, new Vector2(xPosition, yPosition), zoneName, new Vector2(spawnX, spawnY));
                        map.entityList.Add(portal);
                        break;
                    }
                }
                else
                {
                    map.zoneName = stringArray[1];
                }
            }
            streamReader.Close();
            map.SetTiles(mapGrid);
            return(map);
        }