private void _chestOpen(ChestData data) { if (ChestDialog.Instance == null || data.X != ChestDialog.Instance.CurrentChestX || data.Y != ChestDialog.Instance.CurrentChestY) { return; } ChestDialog.Instance.InitializeItems(data.Items); }
public static void ReadChestData(ContentManager Content) { string[] filenames = Directory.GetFiles(@"Content\Game\Chests", "*.xnb"); foreach (string name in filenames) { string filename = @"Game\Chests\" + Path.GetFileNameWithoutExtension(name); ChestData data = Content.Load <ChestData>(filename); ChestData.Add(data.Name, data); } }
private void LoadWorld() { RpgLibrary.WorldClasses.LevelData levelData = Game.Content.Load <RpgLibrary.WorldClasses.LevelData>(@"Game\Levels\Starting Level"); RpgLibrary.WorldClasses.MapData mapData = Game.Content.Load <RpgLibrary.WorldClasses.MapData>(@"Game\Levels\Maps\" + levelData.MapName); TileMap map = TileMap.FromMapData(mapData, Game.Content); Level level = new Level(map); ChestData chestData = Game.Content.Load <ChestData>(@"Game\Chests\Plain Chest"); Chest chest = new Chest(chestData); BaseSprite chestSprite = new BaseSprite( containers, new Rectangle(0, 0, 32, 32), new Point(10, 10)); ItemSprite itemSprite = new ItemSprite( chest, chestSprite); level.Chests.Add(itemSprite); World world = new World(GameRef, GameRef.ScreenRectangle); world.Levels.Add(level); world.CurrentLevel = 0; AnimatedSprite s = new AnimatedSprite( GameRef.Content.Load <Texture2D>(@"SpriteSheets\Eliza"), AnimationManager.Instance.Animations); s.Position = new Vector2(0 * Engine.TileWidth, 5 * Engine.TileHeight); EntityData ed = new EntityData("Eliza", 10, 10, 10, 10, 10, 10, "20|CON|12", "16|WIL|16", "0|0|0"); Entity e = new Entity("Eliza", ed, EntityGender.Female, EntityType.NPC); NonPlayerCharacter npc = new NonPlayerCharacter(e, s); npc.SetConversation("eliza1"); world.Levels[world.CurrentLevel].Characters.Add(npc); GamePlayScreen.World = world; CreateConversation(); ((NonPlayerCharacter)world.Levels[world.CurrentLevel].Characters[0]).SetConversation("eliza1"); }
public static GameObject CreateObject(ChestData data) { GameObject go = GameObject.Instantiate <GameObject>(Resources.Load <GameObject>(data.name)); go.transform.position = data.Position(); Chest chest = go.GetComponent <Chest>(); chest.data = data; return(go); }
public static void SaveChestData(ChestInteract chest) { BinaryFormatter formatter = new BinaryFormatter(); string path = Application.persistentDataPath + "/Chest.data"; FileStream stream = new FileStream(path, FileMode.Create); ChestData data = new ChestData(chest); formatter.Serialize(stream, data); stream.Close(); }
public void CopyChestData(Chest source, Chest target) { IChestDataManager chestDataManager = ModEntry.CategorizeChests.ChestDataManager; ChestData sourceData = chestDataManager.GetChestData(source); ChestData targetData = chestDataManager.GetChestData(target); targetData.AcceptedItemKinds.Clear(); foreach (var itemKey in sourceData.AcceptedItemKinds) { targetData.AddAccepted(itemKey); } }
void btnEdit_Click(object sender, EventArgs e) { if (lbDetails.SelectedItem != null) { string detail = lbDetails.SelectedItem.ToString(); string[] parts = detail.Split(','); string entity = parts[0].Trim(); ChestData data = itemManager.ChestData[entity]; ChestData newData = null; using (FormChestDetails frmChestData = new FormChestDetails()) { frmChestData.Chest = data; frmChestData.ShowDialog(); if (frmChestData.Chest == null) { return; } if (frmChestData.Chest.Name == entity) { itemManager.ChestData[entity] = frmChestData.Chest; FillListBox(); return; } newData = frmChestData.Chest; } DialogResult result = MessageBox.Show( "Name has changed. Do you want to add a new entry?", "New Entry", MessageBoxButtons.YesNo); if (result == DialogResult.No) { return; } if (itemManager.ChestData.ContainsKey(newData.Name)) { MessageBox.Show("Entry already exists. Use Edit to modify the entry."); return; } lbDetails.Items.Add(newData); itemManager.ChestData.Add(newData.Name, newData); } }
private void RecreateItemToggles() { ToggleBag.RemoveChildren(); var itemKeys = ItemDataManager.Categories[ActiveCategory]; foreach (var itemKey in itemKeys) { var item = ItemDataManager.GetItem(itemKey); var toggle = ToggleBag.AddChild(new ItemToggle(TooltipManager, item, ChestData.Accepts(itemKey))); toggle.OnToggle += () => ToggleItem(itemKey); } }
public CategoryMenu(ChestData chestData, IItemDataManager itemDataManager, ITooltipManager tooltipManager) { ItemDataManager = itemDataManager; TooltipManager = tooltipManager; ChestData = chestData; Categories = itemDataManager.Categories.Keys.ToList(); Categories.Sort(); BuildWidgets(); SetCategory(Index); }
void UpdateDataForSafeReplace(int tileID, bool isReplaced) { if (isReplaced == false) { return; } if (tileID == tileNum) { hasSafe = true; ChestData data = transform.GetChild(0).GetComponent <SafePrefabData>().chestData; // safeType = data.safeType; safeID = data.chestID; } }
public CategoryMenu(ChestData chestData, IItemDataManager itemDataManager, ITooltipManager tooltipManager) { ItemDataManager = itemDataManager; TooltipManager = tooltipManager; ChestData = chestData; AvailableCategories = ItemDataManager.Categories.Keys.ToList(); AvailableCategories.Sort(); BuildWidgets(); SetCategory(AvailableCategories.First()); }
/// <summary> /// Se ejecuta cuando un personaje coge un cofre /// </summary> /// <param name="character">Character que ha cogido el cofre.</param> /// <param name="chestCol">Collider del cofre.</param> public override void PickedChest(Character character, Collider2D chestCol) { chestCol.enabled = false; var chestId = chestCol.GetComponent <SpawnedObject>().Id; iTween.ScaleTo(chestCol.gameObject, iTween.Hash("scale", Vector3.zero, "time", 1f)); Chests.Remove(chestId); Destroy(chestCol.gameObject, 1f); var chestRequest = new ChestData { chestId = chestId, playerId = _playerId }; _client.Send(chestRequest.ToJson(), TAPNet.DATAGRAM_RELIABLE); }
void btnOK_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(tbName.Text)) { MessageBox.Show("You must enter a name for the chest."); return; } if (cbTrap.Checked && string.IsNullOrEmpty(tbTrap.Text)) { MessageBox.Show("You must supply a name for the trap on the chest."); return; } if (nudMaxGold.Value < nudMinGold.Value) { MessageBox.Show("Maximum gold in chest must be greater or equal to minimum gold."); return; } ChestData data = new ChestData(); data.Name = tbName.Text; data.IsLocked = cbLock.Checked; if (cbLock.Checked) { data.DifficultyLevel = (DifficultyLevel)cboDifficulty.SelectedIndex; data.KeyName = tbKeyName.Text; data.KeyType = tbKeyType.Text; data.KeysRequired = (int)nudKeys.Value; } data.IsTrapped = cbTrap.Checked; if (cbTrap.Checked) { data.TrapName = tbTrap.Text; } data.MinGold = (int)nudMinGold.Value; data.MaxGold = (int)nudMaxGold.Value; chest = data; this.FormClosing -= FormChestDetails_FormClosing; this.Close(); }
private void RecreateItemToggles() { ToggleBag.RemoveChildren(); var itemKeys = ItemDataManager.Categories[ActiveCategory] .OrderBy(p => ItemDataManager.GetItem(p).DisplayName) .Skip(Row * MaxItemColumns) .Take(MaxItemsPage).ToList(); foreach (var itemKey in itemKeys) { var item = ItemDataManager.GetItem(itemKey); var toggle = ToggleBag.AddChild(new ItemToggle(TooltipManager, item, ChestData.Accepts(itemKey))); toggle.OnToggle += () => ToggleItem(itemKey); } }
private void Awake() { string thisName = name.Split('e')[1]; // nextTile = transform.parent.GetChild(transform.GetSiblingIndex() + 1).GetComponent<TileInfoHolder>(); tileNum = System.Convert.ToInt32(thisName); tileTextNum.text = tileNum.ToString(); string nextName = "Tile" + (tileNum + 1).ToString(); string prevName = "Tile" + (tileNum - 1).ToString(); if (tileNum - 1 < 1) { prevName = "Tile1"; } prevTile = GameObject.Find(prevName).GetComponent <TileInfoHolder>(); if (GameObject.Find(nextName) == null) { Debug.Log("null: " + name + " " + nextName); } else { nextTile = GameObject.Find(nextName).GetComponent <TileInfoHolder>(); } //tileNum = transform.GetSiblingIndex() ;//start at 1 thisTilePos = GetComponent <RectTransform>().anchoredPosition;// + new Vector2(80, 0); thisTileMinAnchor = GetComponent <RectTransform>().anchorMin; thisTileMaxAnchor = GetComponent <RectTransform>().anchorMax; if (hasSafe == true) { ChestData data = transform.GetChild(0).GetComponent <SafePrefabData>().chestData; // safeType = data.safeType; safeID = data.chestID; } if (hasCoin == true) { coinAmount = transform.GetChild(0).GetComponent <PrefabCoinHolder>().CoinData.coinAmount; } SafePickup.OnSafePickupDone += OnSafePickedUp; SafePickup.OnSafeReplaced += UpdateDataForSafeReplace; CoinCollection.OnPickedUpCoin += DeleteCoin; SafePickup.OnRestoreSafe += OnSafeRestore; }
public static ChestData LoadChest(string name) { string path = Application.persistentDataPath + "/temp_chests/chest_" + name + ".inv"; if (File.Exists(path)) { BinaryFormatter formatter = new BinaryFormatter(); FileStream stream = new FileStream(path, FileMode.Open); ChestData d = formatter.Deserialize(stream) as ChestData; stream.Close(); return(d); } else { Debug.Log("Save file not found"); return(null); } }
private void LoadChestData(int chest) { ChestData chestData = chestDataList[chest]; entityType.Text = StringUtil.AsStringHex2(chestData.type); if ((TileEntityType)chestData.type == TileEntityType.Chest || (TileEntityType)chestData.type == TileEntityType.BigChest) { entityId.Text = StringUtil.AsStringHex2(chestData.chestId); itemName.SelectedItem = (ItemType)chestData.itemId; kinstoneType.SelectedItem = (KinstoneType)chestData.itemSubNumber; itemAmount.Text = chestData.itemSubNumber.ToString(); ushort chestPos = chestData.chestLocation; int yPos = chestPos >> 6; int xPos = chestPos - (yPos << 6); xPosition.Text = xPos.Hex(); yPosition.Text = yPos.Hex(); ((MainWindow)Application.OpenForms[0]).HighlightChest(xPos, yPos); itemName.Enabled = true; kinstoneType.Enabled = true; itemAmount.Enabled = true; xPosition.Enabled = true; yPosition.Enabled = true; entityId.Enabled = true; unknown.Text = chestData.unknown.Hex(); } else { entityId.Text = "00"; itemName.SelectedItem = ItemType.Untyped; kinstoneType.SelectedItem = KinstoneType.UnTyped; itemAmount.Text = "0"; xPosition.Text = "0"; yPosition.Text = "0"; ((MainWindow)Application.OpenForms[0]).HighlightChest(-1, -1); itemName.Enabled = false; kinstoneType.Enabled = false; itemAmount.Enabled = false; xPosition.Enabled = false; yPosition.Enabled = false; entityId.Enabled = false; } }
public void AddChest() { int x = _roomData.X1 + Random.Range(1, _roomData.Width - 2); int y = _roomData.Y1 + Random.Range(1, _roomData.Height - 2); if (!script.Instances[y, x] && !script.Instances[y + 1, x] && !script.Instances[y - 1, x]) { Transform o = Instantiate(Chest, new Vector3(x, y, 0), Quaternion.identity, transform); ChestData chest = ScriptableObject.CreateInstance <ChestData>(); ChestData chestref = ChestDatas[Random.Range(0, ChestDatas.Length)]; chest.Create(chestref); chest.Item = GamesItems[Random.Range(0, GamesItems.Length)]; o.GetComponent <Chest>().Create(chest); script.AddToInstance(y, x, true, false); _roomData.ModifyGrid(y - _roomData.Y1, x - _roomData.X1, o); } }
public static ChestData LoadChestData() { string path = Application.persistentDataPath + "/Chest.data"; if (File.Exists(path)) { BinaryFormatter formatter = new BinaryFormatter(); FileStream stream = new FileStream(path, FileMode.Open); ChestData data = formatter.Deserialize(stream) as ChestData; stream.Close(); return(data); } else { Debug.Log("Save file not found in " + path); return(null); } }
public static Chest SpawnReWardChest(ColorChest color, TypeChest type, Vector3 Position) { ChestData cdt = getDataChest(type, MAP_GamePlay.CodeMapcurent); if (cdt == null) { Debug.Log("Không tìm thấy ChestData type = " + type); return(null); } Chest cpf = getChestPrefab(color); if (cpf == null) { Debug.Log("Không tìm thấy Prefabs Chest Colortype = " + color); return(null); } Chest chest = GameObject.Instantiate(cpf, Position, Quaternion.identity); chest.SetUpData(cdt); return(chest); }
private void AddChest(ChestData ChestData) { if (FormDetails.ItemManager.ChestData.ContainsKey(ChestData.Name)) { DialogResult result = MessageBox.Show( ChestData.Name + " already exists. Overwrite it?", "Existing Chest", MessageBoxButtons.YesNo); if (result == DialogResult.No) { return; } itemManager.ChestData[ChestData.Name] = ChestData; FillListBox(); return; } itemManager.ChestData.Add(ChestData.Name, ChestData); lbDetails.Items.Add(ChestData); }
public void GachaSingle(ChestData _data) { m_goBackground.SetActive(true); m_goPanelOne.SetActive(true); m_prefChest.SetActive(false); GachaChest chest = PrefabManager.Instance.MakeScript <GachaChest>(m_prefChest, m_goPanelOne); chest.Initialize(_data.spr_chest, _data.spr_item, _data.rarity); m_btnCloseOne.onClick.RemoveAllListeners(); m_btnCloseOne.interactable = false; chest.OnChestOpen.AddListener(() => { m_btnCloseOne.interactable = true; m_btnCloseOne.onClick.RemoveAllListeners(); m_btnCloseOne.onClick.AddListener(() => { OnGachaFinished.Invoke(); }); }); }
void DisplayUIData(int winnerNum) { Debug.Log("ui: " + playerNum); playerNum = PlayerMoveSync.localPlayerID; if (CoinCollection.playersCoin[playerNum] > 0) { coinAmount.enabled = true; coinImage.enabled = true; coinAmount.text = CoinCollection.playersCoin[playerNum].ToString(); PlayerPrefs.SetInt("Coin", PlayerPrefs.GetInt("Coin") + CoinCollection.playersCoin[playerNum]); } if (playerNum != winnerNum) { return; } if (SafePickup.playerSafeID[playerNum] > 0) { safeImage.enabled = true; safeImage.sprite = chestCollection.chestCollection[SafePickup.playerSafeID[playerNum]].chestImage; if (chestSaver.ReturnChestNum() >= 4) { safeImage.color = Color.gray; safeFullText.enabled = true; return; } } ChestData cData = chestCollection.chestCollection[SafePickup.playerSafeID[playerNum]]; SaveableChest newChest = new SaveableChest(cData.chestID, ChestState.Closed, System.DateTime.Now, cData.openDuration, cData.chestType); if (playerNum == winnerNum && playerNum > 0 && cData.chestID > 0) { OnAddChest(newChest); } }
private void LoadWorld() { RpgLibrary.WorldClasses.LevelData levelData = Game.Content.Load <RpgLibrary.WorldClasses.LevelData>(@"Game\Levels\Starting Level"); RpgLibrary.WorldClasses.MapData mapData = Game.Content.Load <RpgLibrary.WorldClasses.MapData>(@"Game\Levels\Maps\" + levelData.MapName); string[] fileNames = Directory.GetFiles( Path.Combine("Content/Game/Items", "Armor"), "*.xnb"); foreach (string a in fileNames) { string path = "Game/Items/Armor/" + Path.GetFileNameWithoutExtension(a); ArmorData armorData = Game.Content.Load <ArmorData>(path); ItemManager.AddArmor(new Armor(armorData)); } fileNames = Directory.GetFiles( Path.Combine("Content/Game/Items", "Shield"), "*.xnb"); foreach (string a in fileNames) { string path = "Game/Items/Shield/" + Path.GetFileNameWithoutExtension(a); ShieldData shieldData = Game.Content.Load <ShieldData>(path); ItemManager.AddShield(new Shield(shieldData)); } fileNames = Directory.GetFiles( Path.Combine("Content/Game/Items", "Weapon"), "*.xnb"); foreach (string a in fileNames) { string path = "Game/Items/Weapon/" + Path.GetFileNameWithoutExtension(a); WeaponData weaponData = Game.Content.Load <WeaponData>(path); ItemManager.AddWeapon(new Weapon(weaponData)); } CharacterLayerData charData = Game.Content.Load <CharacterLayerData>(@"Game\Levels\Chars\Starting Level"); CharacterLayer characterLayer = new CharacterLayer(); TileMap map = TileMap.FromMapData(mapData, Game.Content); foreach (var c in charData.Characters) { Character character; if (c.Value is NonPlayerCharacterData) { Entity entity = new Entity(c.Value.Name, c.Value.EntityData, c.Value.Gender, EntityType.NPC); using (Stream stream = new FileStream(c.Value.TextureName, FileMode.Open, FileAccess.Read)) { Texture2D texture = Texture2D.FromStream(GraphicsDevice, stream); AnimatedSprite sprite = new AnimatedSprite(texture, AnimationManager.Instance.Animations) { Position = new Vector2(c.Key.X * Engine.TileWidth, c.Key.Y * Engine.TileHeight) }; character = new NonPlayerCharacter(entity, sprite); ((NonPlayerCharacter)character).SetConversation( ((NonPlayerCharacterData)c.Value).CurrentConversation); } characterLayer.Characters.Add(c.Key, character); } } map.AddLayer(characterLayer); Level level = new Level(map); ChestData chestData = Game.Content.Load <ChestData>(@"Game\Chests\Plain Chest"); Chest chest = new Chest(chestData); BaseSprite chestSprite = new BaseSprite( containers, new Rectangle(0, 0, 32, 32), new Point(10, 10)); ItemSprite itemSprite = new ItemSprite( chest, chestSprite); level.Chests.Add(itemSprite); World world = new World(GameRef, GameRef.ScreenRectangle); world.Levels.Add(level); world.CurrentLevel = 0; AnimatedSprite s = new AnimatedSprite( GameRef.Content.Load <Texture2D>(@"SpriteSheets\Eliza"), AnimationManager.Instance.Animations); s.Position = new Vector2(0 * Engine.TileWidth, 5 * Engine.TileHeight); EntityData ed = new EntityData("Eliza", 1, 10, 10, 10, 10, 10, 10, "20|CON|12", "16|WIL|16", "0|0|0"); Entity e = new Entity("Eliza", ed, EntityGender.Female, EntityType.NPC); NonPlayerCharacter npc = new NonPlayerCharacter(e, s); npc.SetConversation("eliza1"); //world.Levels[world.CurrentLevel].Characters.Add(npc); s = new AnimatedSprite( GameRef.Content.Load <Texture2D>(@"SpriteSheets\Eliza"), AnimationManager.Instance.Animations); s.Position = new Vector2(10 * Engine.TileWidth, 0); ed = new EntityData("Barbra", 2, 10, 10, 10, 10, 10, 10, "20|CON|12", "16|WIL|16", "0|0|0"); e = new Entity("Barbra", ed, EntityGender.Female, EntityType.Merchant); Merchant m = new Merchant(e, s); Texture2D items = Game.Content.Load <Texture2D>("ObjectSprites/roguelikeitems"); m.Backpack.AddItem(new GameItem(ItemManager.GetWeapon("Long Sword"), items, new Rectangle(0, 0, 16, 16))); m.Backpack.AddItem(new GameItem(ItemManager.GetWeapon("Short Sword"), items, new Rectangle(16, 0, 16, 16))); world.Levels[world.CurrentLevel].Characters.Add(m); ((CharacterLayer)world.Levels[world.CurrentLevel].Map.Layers.Find(x => x is CharacterLayer)).Characters.Add(new Point(10, 0), m); GamePlayScreen.World = world; CreateConversation(); // ((NonPlayerCharacter)world.Levels[world.CurrentLevel].Characters[0]).SetConversation("eliza1"); }
private void CreateWorld() { Texture2D tilesetTexture = Game.Content.Load <Texture2D>(@"Tilesets\tileset1"); Tileset tileset1 = new Tileset(tilesetTexture, 8, 8, 32, 32); tilesetTexture = Game.Content.Load <Texture2D>(@"Tilesets\tileset2"); Tileset tileset2 = new Tileset(tilesetTexture, 8, 8, 32, 32); List <Tileset> tilesets = new List <Tileset>(); tilesets.Add(tileset1); tilesets.Add(tileset2); MapLayer layer = new MapLayer(100, 100); for (int y = 0; y < layer.Height; y++) { for (int x = 0; x < layer.Width; x++) { Tile tile = new Tile(0, 0); layer.SetTile(x, y, tile); } } MapLayer splatter = new MapLayer(100, 100); Random random = new Random(); for (int i = 0; i < 100; i++) { int x = random.Next(0, 100); int y = random.Next(0, 100); int index = random.Next(2, 14); Tile tile = new Tile(index, 0); splatter.SetTile(x, y, tile); } splatter.SetTile(1, 0, new Tile(0, 1)); splatter.SetTile(2, 0, new Tile(2, 1)); splatter.SetTile(3, 0, new Tile(0, 1)); List <MapLayer> mapLayers = new List <MapLayer>(); mapLayers.Add(layer); mapLayers.Add(splatter); TileMap map = new TileMap(tilesets, mapLayers); Level level = new Level(map); ChestData chestData = Game.Content.Load <ChestData>(@"Game\Chests\Plain Chest"); Chest chest = new Chest(chestData); BaseSprite chestSprite = new BaseSprite( containers, new Rectangle(0, 0, 32, 32), new Point(10, 10)); ItemSprite itemSprite = new ItemSprite( chest, chestSprite); level.Chests.Add(itemSprite); World world = new World(GameRef, GameRef.ScreenRectangle); world.Levels.Add(level); world.CurrentLevel = 0; GamePlayScreen.World = world; }
private void ToggleItem(ItemKey itemKey) { ChestData.Toggle(itemKey); SelectAllButton.Checked = AreAllSelected(); }
private void _chestGetItem(short id, int amount, byte weight, byte maxWeight, ChestData data) { World.Instance.MainPlayer.ActiveCharacter.UpdateInventoryItem(id, amount, weight, maxWeight); EOChestDialog.Instance.InitializeItems(data.Items); m_game.Hud.RefreshStats(); }
private void LoadWorld() { RpgLibrary.WorldClasses.LevelData levelData = Game.Content.Load <RpgLibrary.WorldClasses.LevelData>(@"Game\Levels\Starting Level"); RpgLibrary.WorldClasses.MapData mapData = Game.Content.Load <RpgLibrary.WorldClasses.MapData>(@"Game\Levels\Maps\" + levelData.MapName); CharacterLayerData charData = Game.Content.Load <CharacterLayerData>(@"Game\Levels\Chars\Starting Level"); CharacterLayer characterLayer = new CharacterLayer(); MobLayer mobLayer = new MobLayer(); TileMap map = TileMap.FromMapData(mapData, Game.Content); foreach (var c in charData.Characters) { Character character; if (c.Value is NonPlayerCharacterData data) { Entity entity = new Entity(c.Value.Name, c.Value.EntityData, c.Value.Gender, EntityType.NPC); using (Stream stream = new FileStream(c.Value.TextureName, FileMode.Open, FileAccess.Read)) { Texture2D texture = Texture2D.FromStream(GraphicsDevice, stream); AnimatedSprite sprite = new AnimatedSprite(texture, AnimationManager.Instance.Animations) { Position = new Vector2(c.Key.X * Engine.TileWidth, c.Key.Y * Engine.TileHeight) }; character = new NonPlayerCharacter(entity, sprite); ((NonPlayerCharacter)character).SetConversation( data.CurrentConversation); } characterLayer.Characters.Add(c.Key, character); } } map.AddLayer(characterLayer); map.AddLayer(mobLayer); Level level = new Level(map); ChestData chestData = Game.Content.Load <ChestData>(@"Game\Chests\Plain Chest"); Chest chest = new Chest(chestData); BaseSprite chestSprite = new BaseSprite( containers, new Rectangle(0, 0, 32, 32), new Point(10, 10)); ItemSprite itemSprite = new ItemSprite( chest, chestSprite); level.Chests.Add(itemSprite); World world = new World(GameRef, GameRef.ScreenRectangle); world.Levels.Add(level); world.CurrentLevel = 0; AnimatedSprite s = new AnimatedSprite( GameRef.Content.Load <Texture2D>(@"SpriteSheets\Eliza"), AnimationManager.Instance.Animations) { Position = new Vector2(0 * Engine.TileWidth, 5 * Engine.TileHeight) }; EntityData ed = new EntityData("Eliza", 1, 10, 10, 10, 10, 10, 10, "20|CON|12", "16|WIL|16", "0|0|0"); Entity e = new Entity("Eliza", ed, EntityGender.Female, EntityType.NPC); NonPlayerCharacter npc = new NonPlayerCharacter(e, s); npc.SetConversation("eliza1"); //world.Levels[world.CurrentLevel].Characters.Add(npc); s = new AnimatedSprite( GameRef.Content.Load <Texture2D>(@"SpriteSheets\Eliza"), AnimationManager.Instance.Animations) { Position = new Vector2(10 * Engine.TileWidth, 0) }; ed = new EntityData("Barbra", 2, 10, 10, 10, 10, 10, 10, "20|CON|12", "16|WIL|16", "0|0|0"); e = new Entity("Barbra", ed, EntityGender.Female, EntityType.Merchant); Merchant m = new Merchant(e, s); Texture2D items = Game.Content.Load <Texture2D>("ObjectSprites/roguelikeitems"); m.Backpack.AddItem(GameItemManager.GetItem("Long Sword")); m.Backpack.AddItem(GameItemManager.GetItem("Short Sword")); m.Backpack.AddItem(GameItemManager.GetItem("Apprentice Staff")); m.Backpack.AddItem(GameItemManager.GetItem("Acolyte Staff")); m.Backpack.AddItem(GameItemManager.GetItem("Leather Armor")); m.Backpack.AddItem(GameItemManager.GetItem("Chain Mail")); m.Backpack.AddItem(GameItemManager.GetItem("Studded Leather Armor")); m.Backpack.AddItem(GameItemManager.GetItem("Light Robes")); m.Backpack.AddItem(GameItemManager.GetItem("Medium Robes")); world.Levels[world.CurrentLevel].Characters.Add(m); ((CharacterLayer)world.Levels[world.CurrentLevel].Map.Layers.Find(x => x is CharacterLayer)).Characters.Add(new Point(10, 0), m); GamePlayScreen.World = world; for (int i = 0; i < 25; i++) { ed = new EntityData("Bandit", 1, 10, 12, 12, 10, 10, 10, "20|CON|10", "12|WIL|12", "0|0|0"); e = new Entity("Bandit", ed, EntityGender.Male, EntityType.Monster); s = new AnimatedSprite( GameRef.Content.Load <Texture2D>(@"PlayerSprites/malerogue"), AnimationManager.Instance.Animations); Mob mob = new Bandit(e, s); Rectangle r = new Rectangle(Mechanics.Random.Next(10, 20) * 32, Mechanics.Random.Next(10, 20) * 32, 32, 32); if (!mobLayer.Mobs.ContainsKey(r)) { mobLayer.Mobs.Add(r, mob); } mob.Entity.Equip(GameItemManager.GetItem("Short Sword")); mob.Drops.Add(GameItemManager.GetItem("Short Sword")); mob.Drops.Add(GameItemManager.GetItem("Minor Healing Potion")); } }
public void CreateWorld() { Texture2D tileSetTextureGrass = Game.Content.Load<Texture2D>(@"TileSets/grassTileSet"); Tileset tileSetGrass = new Tileset(tileSetTextureGrass, 8, 8, 32, 32); Texture2D tileSetTextureTown = Game.Content.Load<Texture2D>(@"TileSets/townTileSet"); Tileset tileSetTown = new Tileset(tileSetTextureTown, 8, 8, 32, 32); List<Tileset> tileSets = new List<Tileset>(); tileSets.Add(tileSetGrass); tileSets.Add(tileSetTown); MapLayer layer = new MapLayer(100,100); for (int y = 0; y < layer.Height; y++) { for (int x = 0; x < layer.Width; x++) { Tile tile = new Tile(0,0); layer.SetTile(x,y,tile); } } MapLayer splatter = new MapLayer(100, 100); Random random = new Random(); for (int i = 0; i < 100; i++) { int x = random.Next(0,100); int y = random.Next(0, 100); int index = random.Next(2, 14); Tile tile = new Tile(index, 0); splatter.SetTile(x,y,tile); } splatter.SetTile(1,0,new Tile(0,1)); splatter.SetTile(2,0,new Tile(2,1)); splatter.SetTile(3,0,new Tile(0,1)); List<MapLayer> mapLayers = new List<MapLayer>(); mapLayers.Add(layer); mapLayers.Add(splatter); TileMap map = new TileMap(tileSets, mapLayers); Level level = new Level(map); ChestData chestData = new ChestData(); chestData.Name = "Chest"; chestData.MinGold = 10; chestData.MaxGold = 101; Chest chest = new Chest(chestData); BaseSprite chestSprite = new BaseSprite(containers, new Rectangle(0,0,32,32), new Point(10,10)); ItemSprite itemSprite = new ItemSprite(chest, chestSprite); level.Chests.Add(itemSprite); World world = new World(gameRef, gameRef.ScreenRectangle); world.Levels.Add(level); world.CurrentLevel = 0; GamePlayScreen.World = world; }
private void CreateWorld() { Texture2D tilesetTexture = Game.Content.Load <Texture2D>(@"Tilesets\tileset1"); Tileset tileset1 = new Tileset(tilesetTexture, 8, 8, 32, 32); tilesetTexture = Game.Content.Load <Texture2D>(@"Tilesets\tileset2"); Tileset tileset2 = new Tileset(tilesetTexture, 8, 8, 32, 32); MapLayer layer = new MapLayer(100, 100); for (int y = 0; y < layer.Height; y++) { for (int x = 0; x < layer.Width; x++) { Tile tile = new Tile(0, 0); layer.SetTile(x, y, tile); } } MapLayer splatter = new MapLayer(100, 100); Random random = new Random(); for (int i = 0; i < 100; i++) { int x = random.Next(0, 100); int y = random.Next(0, 100); int index = random.Next(2, 14); Tile tile = new Tile(index, 0); splatter.SetTile(x, y, tile); } splatter.SetTile(1, 0, new Tile(0, 1)); splatter.SetTile(2, 0, new Tile(2, 1)); splatter.SetTile(3, 0, new Tile(0, 1)); TileMap map = new TileMap(tileset1, layer); map.AddTileset(tileset2); map.AddLayer(splatter); map.CollisionLayer.Collisions.Add(new Point(1, 0), CollisionType.Impassable); map.CollisionLayer.Collisions.Add(new Point(3, 0), CollisionType.Impassable); Level level = new Level(map); ChestData chestData = Game.Content.Load <ChestData>(@"Game\Chests\Plain Chest"); Chest chest = new Chest(chestData); BaseSprite chestSprite = new BaseSprite( containers, new Rectangle(0, 0, 32, 32), new Point(10, 10)); ItemSprite itemSprite = new ItemSprite( chest, chestSprite); level.Chests.Add(itemSprite); World world = new World(GameRef, GameRef.ScreenRectangle); world.Levels.Add(level); world.CurrentLevel = 0; AnimatedSprite s = new AnimatedSprite( GameRef.Content.Load <Texture2D>(@"SpriteSheets\Eliza"), AnimationManager.Instance.Animations); s.Position = new Vector2(5 * Engine.TileWidth, 5 * Engine.TileHeight); EntityData ed = new EntityData("Eliza", 10, 10, 10, 10, 10, 10, "20|CON|12", "16|WIL|16", "0 | 0 | 0"); Entity e = new Entity("Eliza", ed, EntityGender.Female, EntityType.NPC); NonPlayerCharacter npc = new NonPlayerCharacter(e, s); world.Levels[world.CurrentLevel].Characters.Add(npc); GamePlayScreen.World = world; }
public void Save(string saveGameName, string newLevelName) { CurrentSave = new SaveGame(); //save player location CurrentSave.PlayerLocation = new float[3]; CurrentSave.PlayerLocation[0] = GameManager.Inst.PlayerControl.SelectedPC.transform.position.x; CurrentSave.PlayerLocation[1] = GameManager.Inst.PlayerControl.SelectedPC.transform.position.y; CurrentSave.PlayerLocation[2] = GameManager.Inst.PlayerControl.SelectedPC.transform.position.z; //save player status CurrentSave.PlayerStatus = GameManager.Inst.PlayerControl.SelectedPC.MyStatus.Data; //save player inventory CurrentSave.PlayerInventory = new CharacterInventorySaveData(); CurrentSave.PlayerInventory.ArmorSlot = GameManager.Inst.PlayerControl.SelectedPC.Inventory.ArmorSlot; CurrentSave.PlayerInventory.HeadSlot = GameManager.Inst.PlayerControl.SelectedPC.Inventory.HeadSlot; CurrentSave.PlayerInventory.RifleSlot = GameManager.Inst.PlayerControl.SelectedPC.Inventory.RifleSlot; CurrentSave.PlayerInventory.SideArmSlot = GameManager.Inst.PlayerControl.SelectedPC.Inventory.SideArmSlot; CurrentSave.PlayerInventory.ThrowSlot = GameManager.Inst.PlayerControl.SelectedPC.Inventory.ThrowSlot; CurrentSave.PlayerInventory.ToolSlot = GameManager.Inst.PlayerControl.SelectedPC.Inventory.ToolSlot; CurrentSave.PlayerInventory.BackpackCols = GameManager.Inst.PlayerControl.SelectedPC.Inventory.BackpackCols; CurrentSave.PlayerInventory.BackpackRows = GameManager.Inst.PlayerControl.SelectedPC.Inventory.BackpackRows; CurrentSave.PlayerInventory.Backpack = new List <GridItemData>(GameManager.Inst.PlayerControl.SelectedPC.Inventory.Backpack); //save player boosts CurrentSave.PlayerBoosts = GameManager.Inst.PlayerControl.Survival.GetStatBoosts(); CurrentSave.PlayerFirstName = GameManager.Inst.PlayerProgress.PlayerFirstName; CurrentSave.PlayerLastName = GameManager.Inst.PlayerProgress.PlayerLastName; CurrentSave.DiscoveredTopics = new List <string>(GameManager.Inst.PlayerProgress.DiscoveredTopics); CurrentSave.JournalEntries = new List <List <string> >(GameManager.Inst.PlayerProgress.JournalEntries); CurrentSave.IncompleteTasks = new List <int>(GameManager.Inst.PlayerProgress.IncompleteTasks); CurrentSave.CompletedTasks = new List <int>(GameManager.Inst.PlayerProgress.CompletedTasks); //save story conditions CurrentSave.ItemConditions = new List <StoryConditionItem>(); CurrentSave.TriggerConditions = new List <StoryConditionTrigger>(); foreach (KeyValuePair <string, StoryCondition> storyCondition in GameManager.Inst.QuestManager.StoryConditions) { if (storyCondition.Value.Type == StoryConditionType.Item) { CurrentSave.ItemConditions.Add((StoryConditionItem)storyCondition.Value); } else if (storyCondition.Value.Type == StoryConditionType.Trigger) { CurrentSave.TriggerConditions.Add((StoryConditionTrigger)storyCondition.Value); } } //save story event handler LinkedList <StoryEventListener> [] storyListenerLists = StoryEventHandler.Instance.AllListenerLists; CurrentSave.StoryListenerLists = new List <StoryEventListener> [storyListenerLists.Length]; for (int i = 0; i < storyListenerLists.Length; i++) { List <StoryEventListener> list = StoryEventHandler.Instance.ConvertLinkedListenerToList(storyListenerLists[i]); CurrentSave.StoryListenerLists[i] = list; } CurrentSave.StoryEventList = StoryEventHandler.Instance.ConvertQueueStoryEventToList(StoryEventHandler.Instance.StoryEventQueue); CurrentSave.CurrentStoryEvent = StoryEventHandler.Instance.CurrentStoryEvent; CurrentSave.IsCurrentEventDone = StoryEventHandler.Instance.IsCurrentEventDone; //create new level data after removing existing one List <Level> allLevelsCopy = new List <Level>(GameManager.Inst.WorldManager.AllLevels); foreach (Level level in allLevelsCopy) { if (level.Name == GameManager.Inst.WorldManager.CurrentLevel.Name) { GameManager.Inst.WorldManager.AllLevels.Remove(level); } } Debug.Log("how many levels in AllLevels? " + GameManager.Inst.WorldManager.AllLevels.Count); CurrentSave.CurrentDay = GameManager.Inst.WorldManager.CurrentDay; CurrentSave.CurrentTime = GameManager.Inst.WorldManager.CurrentTime; CurrentSave.CurrentWeather = GameManager.Inst.WorldManager.CurrentWeather; CurrentSave.IsDayTime = GameManager.Inst.WorldManager.IsDayTime; CurrentSave.DayNightTransition = GameManager.Inst.WorldManager.DayNightTransition; CurrentSave.NightDayTransition = GameManager.Inst.WorldManager.NightDayTransition; Level currentLevel = new Level(); currentLevel.Name = GameManager.Inst.WorldManager.CurrentLevel.Name; //save pickup items in the scene //first remove all pickup items from list from current level List <PickupItemData> pickupDataList = new List <PickupItemData>(); //now go through all pickup items in the scene and create pickup data list GameObject [] objects = GameObject.FindGameObjectsWithTag("PickupItem"); foreach (GameObject o in objects) { PickupItem pickup = o.GetComponent <PickupItem>(); PickupItemData data = new PickupItemData(); data.ItemID = pickup.Item.ID; data.Quantity = pickup.Quantity; data.Durability = pickup.Durability; data.Pos = new SerVector3(pickup.transform.position); data.EulerAngles = new SerVector3(pickup.transform.localEulerAngles); pickupDataList.Add(data); } currentLevel.PickupItemDatas = pickupDataList; //save characters in this level currentLevel.Characters = new List <CharacterSaveData>(); GameObject [] characters = GameObject.FindGameObjectsWithTag("NPC"); foreach (GameObject o in characters) { //only save character who have household Character character = o.GetComponent <Character>(); if (character.MyAI.Squad == null || character.MyAI.Squad.Household == null || character.MyAI.Squad.Household.CurrentSquad.Faction != character.Faction) { continue; } CharacterSaveData saveData = new CharacterSaveData(); saveData.GoapID = character.GoapID; saveData.CharacterID = character.CharacterID; saveData.Name = character.Name; saveData.Title = character.Title; saveData.GOName = character.name; saveData.CharacterType = character.CharacterType; saveData.SquadID = character.MyAI.Squad.Household.CurrentSquad.ID; saveData.Faction = character.Faction; saveData.IsCommander = character.IsCommander; saveData.IsEssential = character.IsEssential; saveData.StatusData = character.MyStatus.Data; saveData.Jobs = character.MyJobs; saveData.Pos = new SerVector3(character.transform.position); saveData.Angles = new SerVector3(character.transform.localEulerAngles); saveData.Inventory = new CharacterInventorySaveData(); saveData.Inventory.ArmorSlot = character.Inventory.HeadSlot; saveData.Inventory.HeadSlot = character.Inventory.HeadSlot; saveData.Inventory.RifleSlot = character.Inventory.RifleSlot; saveData.Inventory.SideArmSlot = character.Inventory.SideArmSlot; saveData.Inventory.ThrowSlot = character.Inventory.ThrowSlot; saveData.Inventory.ToolSlot = character.Inventory.ToolSlot; saveData.Inventory.BackpackCols = character.Inventory.BackpackCols; saveData.Inventory.BackpackRows = character.Inventory.BackpackRows; saveData.Inventory.Backpack = new List <GridItemData>(character.Inventory.Backpack); currentLevel.Characters.Add(saveData); } //save traders for current level List <TraderData> traders = new List <TraderData>(); foreach (HumanCharacter character in GameManager.Inst.NPCManager.HumansInScene) { Trader trader = character.GetComponent <Trader>(); if (trader != null) { TraderData traderData = new TraderData(); traderData.CharacterID = character.CharacterID; traderData.Cash = trader.Cash; traderData.Tier = trader.Tier; traderData.TraderInventory = trader.TraderInventory; traderData.SupplyRenewTimer = trader.SupplyRenewTimer; traders.Add(traderData); } } currentLevel.Traders = traders; //save chests //first remove all chests from list from current level List <ChestData> chestDataList = new List <ChestData>(); //now go through all chests in the scene and create pickup data list GameObject [] chests = GameObject.FindGameObjectsWithTag("Chest"); foreach (GameObject o in chests) { Chest chest = o.GetComponent <Chest>(); ChestData data = new ChestData(); data.ChestID = chest.ChestID; data.ColSize = chest.ColSize; data.RowSize = chest.RowSize; data.Items = chest.Items; data.IsLocked = chest.IsLocked; data.KeyID = chest.KeyID; chestDataList.Add(data); } currentLevel.ChestDatas = chestDataList; //save households currentLevel.Households = new List <HouseholdSaveData>(); Household [] households = (Household[])GameObject.FindObjectsOfType <Household>(); foreach (Household household in households) { HouseholdSaveData saveData = new HouseholdSaveData(); saveData.HouseholdName = household.name; if (household.CurrentSquad != null) { saveData.CurrentSquadID = household.CurrentSquad.ID; saveData.CurrentSquadTier = household.CurrentSquad.Tier; saveData.OwningFaction = household.CurrentSquad.Faction; } else { saveData.CurrentSquadID = ""; saveData.CurrentSquadTier = 1; } saveData.IsRefilledToday = household.IsRefilledToday; saveData.Expedition1SentToday = household.Expedition1SentToday; saveData.Expedition2SentToday = household.Expedition2SentToday; saveData.ExpeditionTime1 = household.ExpeditionTime1; saveData.ExpeditionTime2 = household.ExpeditionTime2; currentLevel.Households.Add(saveData); } //save doors currentLevel.Doors = new List <DoorSaveData>(); GameObject [] doors = GameObject.FindGameObjectsWithTag("Door"); foreach (GameObject o in doors) { Door door = o.GetComponent <Door>(); DoorSaveData saveData = new DoorSaveData(); saveData.ID = door.ID; saveData.IsLocked = door.IsLocked; if (door.ID == "zsk_blockadedoor") { Debug.Log(door.ID + " is locked? " + saveData.IsLocked); } saveData.IsOpen = door.IsOpen; currentLevel.Doors.Add(saveData); } GameManager.Inst.WorldManager.AllLevels.Add(currentLevel); CurrentSave.Levels = new List <Level>(GameManager.Inst.WorldManager.AllLevels); CurrentSave.CurrentEnvironmentName = GameManager.Inst.WorldManager.CurrentEnvironment.Name; //save factions CurrentSave.Factions = new List <KeyValuePair <Faction, FactionData> >(); foreach (KeyValuePair <Faction, FactionData> factionData in GameManager.Inst.NPCManager.AllFactions) { factionData.Value.PrepareSave(); CurrentSave.Factions.Add(factionData); } //build the save file if (!String.IsNullOrEmpty(newLevelName)) { CurrentSave.LevelToLoad = newLevelName; saveGameName = "Autosave - " + newLevelName; } else { CurrentSave.LevelToLoad = GameManager.Inst.WorldManager.CurrentLevelName; } string fullPath = Application.persistentDataPath + "/" + saveGameName + ".dat"; BinaryFormatter bf = new BinaryFormatter(); FileStream file; if (File.Exists(fullPath)) { file = File.Open(fullPath, FileMode.Open); } else { file = File.Create(fullPath); } bf.Serialize(file, CurrentSave); Debug.Log(saveGameName + " has been saved"); GameManager.Inst.UIManager.SetConsoleText("Game saved."); }