public override void SaveAs() { GrabDataFromUI(); SaveQuestAsMenu.Show( new SaveQuestAsMenuParams(QuestStepData.Clone(), _questMessageData.Clone()) ); }
public static void CompleteStep(string questId, int variantId) { UserQuestStepData userStep = _userStepStorage.Get(questId); if (userStep.state == UserQuestState.COMPLETE) { Debug.LogError("Failed to complete step! Already completed userStep id=" + questId); return; } QuestStepData questQuestStepData = Data.Repository.Steps[questId]; if (questQuestStepData.stepType == QuestStepType.MESSAGE) { QuestMessageData messageStep = Data.Repository.MessageSteps[questQuestStepData.typeId]; if (variantId < messageStep.variants.Length) { QuestVariantData variant = messageStep.variants[variantId]; userStep.Complete(variantId); CreateMessage(questId, variant.text, true); GoToStep(variant.targetStepId); } else { Debug.LogError("Failed to complete step! No variant id=" + variantId.ToString() + " found in step id=" + messageStep.Id); return; } } //OnStepComplete.Invoke(userStep); }
public CreateQuestStepCommand(string id, string type) { QuestStepData item = new QuestStepData(); item.stepType = type; item.Id = id; item.typeId = id; _item = item; }
internal override void Init(QuestStepData questStepData) { QuestStepData = questStepData; QuestMessageData questMessageData = Data.Repository.MessageSteps[QuestStepData.typeId]; _messageInput.text = questMessageData.text; _id = questMessageData.Id; ResetVariants(); for (int i = 0; i < _variants.Length; i++) { if (i < questMessageData.variants.Length) { _variants[i].SetData(questMessageData.variants[i]); } } }
private void Save() { QuestStepData item = _parameters.templateData; item.Id = _newId; item.typeId = _newId; if (_parameters.relatedTemplateData != null) { _parameters.relatedTemplateData.Id = item.typeId; } item.Save(_parameters.relatedTemplateData); if (_parameters.OnSaveSuccess != null) { _parameters.OnSaveSuccess.Invoke(item.Id); } }
internal override void Init(QuestStepData questStepData) { QuestStepData = questStepData; if (!questStepData.stepType.Equals(QuestStepType.TRIGGER)) { Debug.LogError(this.ToString() + " : !questStepData.stepType.Equals(QuestStepType.TRIGGER)"); return; } QuestTriggerStepData sourceData = Data.Repository.TriggerSteps[questStepData.typeId]; _id = sourceData.Id; for (int i = 0; i < _triggerEditors.Length; i++) { TriggerData triggerData = i < sourceData.Triggers.Length ? sourceData.Triggers[i] : null; _triggerEditors[i].Init(triggerData); } }
void CreateRelatedData(QuestStepData item) { switch (item.stepType) { case Collections.MESSAGE: var messageData = new QuestMessageData { Id = item.typeId }; global::Data.Repository.MessageSteps.Set(messageData, messageData.Id, true, OnCreated); break; case Collections.TRIGGER: var triggerData = new QuestTriggerStepData { Id = item.typeId }; global::Data.Repository.TriggerSteps.Set(triggerData, triggerData.Id, true, OnCreated); break; default: Debug.LogError(this + " Save(): unknown type: " + item.stepType); break; } }
private void OnSelectQuest(string Id) { _currentQuestId = Id; //save story if (saveStory) { //если текущий шаг не последний - удаляем те, что после него if (_currentStoryIndex < _selectedQuestStory.Count - 1) { _selectedQuestStory.RemoveRange(_currentStoryIndex, _selectedQuestStory.Count - _currentStoryIndex); } _selectedQuestStory.Add(_currentQuestId); _currentStoryIndex++; Debug.Log("Add Id : " + _currentQuestId); } saveStory = true; /// _currentQuestData = Data.Repository.Steps[Id]; if (_currentQuestData == null) { _messageStepEditor.gameObject.SetActive(false); _triggerStepEditor.gameObject.SetActive(false); _currentEditor = null; return; } switch (_currentQuestData.stepType) { case QuestStepType.MESSAGE: ShowCommonEditorTab(); break; case QuestStepType.TRIGGER: ShowTriggetEditorTab(); break; } }
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("brenda1"); ((CharacterLayer)world.Levels[world.CurrentLevel].Map.Layers.Find(x => x is CharacterLayer)).Characters.Add(new Point(0, 5), npc); 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, GameRef); Rectangle r = new Rectangle(Mechanics.Random.Next(10, 50) * 32, Mechanics.Random.Next(10, 50) * 32, 32, 32); mob.Sprite.Position = new Vector2(r.X, r.Y); 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")); } QuestStepData step = new QuestStepData() { StepType = QuestStepType.Fight, Level = 1, Source = "Eliza", Target = "Bandit" }; List <QuestStepData> steps = new List <QuestStepData> { step }; Reward reward = new Reward { Experience = 1000, Gold = 1000 }; reward.Items.Add("Minor Healing Potion"); Quest q = new Quest("Eliza", steps, reward); npc.Quests.Add(q); }
internal abstract void Init(QuestStepData questStepData);
public RemoveQuestStepCommand(QuestStepData data) { _data = data; }
public SaveQuestAsMenuParams(QuestStepData q, DataItem r, Action <string> c = null) { templateData = q; relatedTemplateData = r; OnSaveSuccess = c ?? delegate { }; }