Exemple #1
0
 public override void SaveAs()
 {
     GrabDataFromUI();
     SaveQuestAsMenu.Show(
         new SaveQuestAsMenuParams(QuestStepData.Clone(), _questMessageData.Clone())
         );
 }
Exemple #2
0
        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;
        }
Exemple #4
0
    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);
        }
    }
Exemple #6
0
    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;
            }
        }
Exemple #9
0
        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);
        }
Exemple #10
0
 internal abstract void Init(QuestStepData questStepData);
Exemple #11
0
 public RemoveQuestStepCommand(QuestStepData data)
 {
     _data = data;
 }
 public SaveQuestAsMenuParams(QuestStepData q, DataItem r, Action <string> c = null)
 {
     templateData        = q;
     relatedTemplateData = r;
     OnSaveSuccess       = c ?? delegate { };
 }