public ChooseTimeDialog()
        {
            InitializeComponent();
            scheduledTime    = new ItemScheduledTime();
            _timePicker.Time = DateTime.Now.TimeOfDay;
            Title            = "New Alarm";
            BindingContext   = this;

            var settingsDatabaseController = new SettingsDatabaseController();
            var curr_settings = settingsDatabaseController.GetSettings();

            if (curr_settings == null)
            {
                curr_settings = new ItemSettings()
                {
                    IsDatabaseSetUp      = true,
                    LastDifficultyChosen = "Advanced"
                };
                settingsDatabaseController.SaveSettings(curr_settings);
            }
            switch (curr_settings.LastDifficultyChosen)
            {
            case "A1": pickerIndex = 0; break;

            case "A2": pickerIndex = 1; break;

            case "B1": pickerIndex = 2; break;

            case "B2": pickerIndex = 3; break;

            default: pickerIndex = 4; break;
            }
            _difficultyPicker.SelectedIndex = pickerIndex;
        }
Example #2
0
    // ------
    public bool IsDefault()
    {
        if (weaponID != E_WeaponID.None)
        {
            WeaponSettings settings = WeaponSettingsManager.Instance.Get(weaponID);
            return(settings.IsDefault());
        }
        else if (itemID != E_ItemID.None)
        {
            ItemSettings settings = ItemSettingsManager.Instance.Get(itemID);
            return(settings.IsDefault());
        }
        else if (upgradeID != E_UpgradeID.None)
        {
            UpgradeSettings settings = UpgradeSettingsManager.Instance.Get(upgradeID);
            return(settings.IsDefault());
        }
        else if (perkID != E_PerkID.None)
        {
            PerkSettings settings = PerkSettingsManager.Instance.Get(perkID);
            return(settings.IsDefault());
        }

        return(false);
    }
Example #3
0
 public void LoadObject()
 {
     Move   = Resources.FindObjectsOfTypeAll <MoveSettings>().First() as MoveSettings;
     Item   = Resources.FindObjectsOfTypeAll <ItemSettings>().First() as ItemSettings;
     Attack = Resources.FindObjectsOfTypeAll <AttackSettings>().First() as AttackSettings;
     Game   = Resources.FindObjectsOfTypeAll <GameSettings>().First() as GameSettings;
 }
Example #4
0
        protected void RepeaterOptions_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                SettingEntity ThemeSetting = e.Item.DataItem as SettingEntity;

                KeyValueEntity KeyValue = ItemSettings.Find(r1 => r1.Key == ThemeSetting.Name);
                if (KeyValue != null && !String.IsNullOrEmpty(KeyValue.Key))
                {
                    ThemeSetting.DefaultValue = KeyValue.Value.ToString();
                }

                //构造输入控件
                PlaceHolder ThemePH = e.Item.FindControl("ThemePH") as PlaceHolder;

                #region "创建控件"
                ControlHelper ctl = new ControlHelper(this);

                ThemePH.Controls.Add((Control)ctl.ViewControl(ThemeSetting));
                #endregion

                Literal liTitle = e.Item.FindControl("liTitle") as Literal;
                liTitle.Text = String.Format("<label class=\"col-sm-3 control-label\" for=\"{1}\">{0}:</label>", !String.IsNullOrEmpty(ThemeSetting.Alias) ? ThemeSetting.Alias : ThemeSetting.Name, ctl.ViewControlID(ThemeSetting));

                if (!String.IsNullOrEmpty(ThemeSetting.Description))
                {
                    Literal liHelp = e.Item.FindControl("liHelp") as Literal;
                    liHelp.Text = String.Format("<span class=\"help-block\"><i class=\"fa fa-info-circle\"></i> {0}</span>", ThemeSetting.Description);
                }
            }
        }
        private void Awake()
        {
            //TODO make items be generator through something else and automatically hooked up to this
            Root          = FindObjectOfType <ItemRoot>();
            _itemSettings = ComponentUtility.FindOnNamedGameObject <ItemSettings>();

            MeshRendererArray = this.GetComponentsInChildren <MeshRenderer>();

            MeshArray = new Mesh[MeshRendererArray.Length];
            for (int i = 0; i < MeshArray.Length; ++i)
            {
                MeshArray[i] = MeshRendererArray[i].GetComponent <MeshFilter>().sharedMesh;
            }

            MeshTransformArray = new Transform[MeshRendererArray.Length];
            for (int i = 0; i < MeshTransformArray.Length; ++i)
            {
                MeshTransformArray[i] = MeshRendererArray[i].GetComponent <Transform>();
            }

            MaterialArrayInitialize();
            ColliderArrayInitialize();

            _catcher = GameObject.FindObjectOfType <Catcher>();
        }
Example #6
0
    public void SpawnItem(ItemTier tier)
    {
        ItemSettings settings = m_ItemTierSettings[tier];

        int amountOfMachinesRequired = Random.Range(settings.MinAmountMachines, settings.MaxAmountMachines + 1);

        List <int> machineIndexList = new List <int> {
            1, 2, 3, 4
        };

        for (int i = 0; i < 4 - amountOfMachinesRequired; ++i)
        {
            int randIndex = Random.Range(0, machineIndexList.Count);

            int machineIndex = machineIndexList[randIndex];

            machineIndexList.RemoveAt(randIndex);
        }

        ItemRuntimeData runtimeData;

        runtimeData.MachineOrderList = machineIndexList;

        // Spawn the actual item
        Spawn(runtimeData, settings);
    }
Example #7
0
        internal void SaveSettings(PaneSettings ps)
        {
            SetMappedItem(ps.GridLineItem);
            SaveAxisSettings(ps.XAxis, XAxis);
            SaveAxisSettings(ps.X2Axis, X2Axis);
            SaveAxisSettings(ps.YAxis, YAxis);
            SaveAxisSettings(ps.Y2Axis, Y2Axis);

            foreach (LogGraphCurveItem item in CurveList)
            {
                ItemSettings settings = new ItemSettings();

                settings.ID = item.ItemID;
                settings.AssignedToX2Axis = item.IsX2Axis;
                settings.AssignedToY2Axis = item.IsY2Axis;
                settings.ShowSymbol       = item.Symbol.IsVisible;
                settings.Color            = item.Color.ToArgb();
                settings.DrawInfinitely   = item.DrawInfinitely;
                ps.Items.Add(settings);
            }

            ps.Threshold = m_Threshold?.Location.Y.ToString();

            m_HasChanged = false;
        }
Example #8
0
    public void ConsumableItemUsed(E_ItemID id)
    {
        int index = PlayerData.InventoryList.Items.FindIndex(p => p.ID == id);

        if (index < 0)
        {
            return;
        }

        PPIItemData itemData = PlayerData.InventoryList.Items[index];

        MFDebugUtils.Assert(itemData.IsValid());

        itemData.Count--;
        PlayerData.InventoryList.Items[index] = itemData;

        if (uLink.Network.isServer)
        {
            //SEND TO CLOUD !!!!
            ItemSettings settings = ItemSettingsManager.Instance.Get(id);

            CloudServices.GetInstance()
            .ModifyItem(PrimaryKey,
                        PPIManager.ProductID,
                        settings.GUID,
                        "Count",
                        itemData.Count.ToString(),
                        CloudConfiguration.DedicatedServerPasswordHash);
        }
    }
Example #9
0
    // ------
    public bool Enabled()
    {
        if (weaponID != E_WeaponID.None)
        {
            WeaponSettings settings = WeaponSettingsManager.Instance.Get(weaponID);
            return(!settings.DISABLED);
        }
        else if (itemID != E_ItemID.None)
        {
            ItemSettings settings = ItemSettingsManager.Instance.Get(itemID);
            return(!settings.DISABLED);
        }
        else if (upgradeID != E_UpgradeID.None)
        {
            UpgradeSettings settings = UpgradeSettingsManager.Instance.Get(upgradeID);
            return(!settings.DISABLED);
        }
        else if (perkID != E_PerkID.None)
        {
            PerkSettings settings = PerkSettingsManager.Instance.Get(perkID);
            return(!settings.DISABLED);
        }
        else
        {
            Error("Unknown type!");
        }

        return(false);
    }
Example #10
0
    private void Spawn(ItemRuntimeData runtimeData, ItemSettings settings)
    {
        Transform randomSpawnTransform = m_ItemSpawnPoints[Random.Range(0, m_ItemSpawnPoints.Length)];

        Item spawnedItem = Instantiate(settings.Prefab, randomSpawnTransform.position, Quaternion.identity).GetComponent <Item>();

        spawnedItem.SetRuntimeData(runtimeData);
    }
Example #11
0
    private static void CreateAsset()
    {
        string       path      = UnityEditor.AssetDatabase.GetAssetPath(UnityEditor.Selection.activeObject);
        string       assetPath = path + "/BlankItemSettings.asset";
        ItemSettings item      = ScriptableObject.CreateInstance <ItemSettings>();

        UnityEditor.ProjectWindowUtil.CreateAsset(item, assetPath);
    }
        void Awake()
        {
            GameObject gameObject = new GameObject(this.name + "Target");

            TargetTransform          = gameObject.GetComponent <Transform>();
            TargetTransform.position = GetComponent <Item>().transform.position;
            TargetTransform.forward  = GetComponent <Item>().transform.forward;
            AttachPointArray         = GetComponentsInChildren <AttachPoint>();
            _itemSettings            = ComponentUtility.FindOnNamedGameObject <ItemSettings>();
        }
Example #13
0
    protected override void Initialize(AgentAction action)
    {
        base.Initialize(action);

        Action = action as AgentActionUseItem;

        AnimName = Owner.AnimSet.GetGadgetAnim(Owner.BlackBoard.Desires.Gadget, Action.CoverPose, Action.CoverDirection);

        if ((AnimName == null) || (Animation[AnimName] == null))
        {
            Action.SetFailed();
            Action = null;
            Release();
            return;
        }

        // play owner anims
        //THROW_RUN
//		if ( Owner.BlackBoard.MotionType != E_MotionType.Walk && Owner.BlackBoard.MotionType != E_MotionType.Run )		//allow movement while throwing
        if (Owner.BlackBoard.KeepMotion == false)         //beny: due to 'UseItem while Move' feature
        {
            Animation[AnimName].layer = 3;
            CrossFade(AnimName, 0.2f, PlayMode.StopAll);
            Animation[AnimName].speed = 1.4f;
            //Animation.Play(animName, AnimationPlayMode.Stop);
            EndOfStateTime = Animation[AnimName].length * 0.7f + Time.timeSinceLevelLoad;
        }
        else         //movement throw
        {
            Animation[AnimName].layer = 3;
//			Animation[AnimName].blendMode = AnimationBlendMode.Additive;
            Blend(AnimName, 0.2f);
            Animation[AnimName].speed = 1.4f;

            EndOfStateTime = Animation[AnimName].length * 0.8f / Animation[AnimName].speed + Time.timeSinceLevelLoad;

//			Debug.Log ("ThrowRun");
        }

        if (Owner.IsServer)
        {
            ThrowTime = 0.5f / Animation[AnimName].speed + Time.timeSinceLevelLoad;
        }

        ItemSettings s = ItemSettingsManager.Instance.Get(Owner.BlackBoard.Desires.Gadget);

        if (s && s.ItemBehaviour == E_ItemBehaviour.Place)
        {
            Owner.SoundPlay(Owner.UseSound);
        }
        else
        {
            Owner.SoundPlay(Owner.ThrowSound);
        }
    }
Example #14
0
    int CompareItem(int otherId)
    {
        ItemSettings otherWs = ItemSettingsManager.Instance.Get((E_ItemID)(otherId));
        ItemSettings myWs    = ItemSettingsManager.Instance.Get((E_ItemID)(Id));

        int res = myWs.ItemType.CompareTo(otherWs.ItemType);

        if (res != 0)
        {
            return(res);
        }

        //2. behaviour
        return(myWs.ItemBehaviour.CompareTo(otherWs.ItemBehaviour));
    }
Example #15
0
    public ConveyorItem(Conveyor conveyor, ItemDefinition definition, ItemSettings settings) : base("Conveyor" + definition.type.ToString(), GameObject.CreatePrimitive(PrimitiveType.Quad))
    {
        _conveyor       = conveyor;
        this.settings   = settings;
        this.definition = definition;
        container.transform.localRotation = Quaternion.Euler(90, 0, 0);

        body.transform.localRotation = Quaternion.identity;
        body.transform.localScale    = new Vector3(width, height, 1);

        meshRenderer.material.color = Color.white;
        label.SetLocalRotation(Quaternion.identity);
        label.SetText(type.ToString() + "\n" + level);
        position = conveyor.top - (Vector3.forward * height * 0.5f) + Vector3.up;
    }
 public int SaveSettings(ItemSettings settings)
 {
     lock (locker)
     {
         if (settings.ID.HasValue)
         {
             connection.Update(settings);
             return(settings.ID.Value);
         }
         else
         {
             settings.ID = SETTINGS_ID;
             return(connection.Insert(settings));
         }
     }
 }
Example #17
0
 // ------
 void InitData()
 {
     if (weaponID != E_WeaponID.None)
     {
         WeaponSettings settings = WeaponSettingsManager.Instance.Get(weaponID);
         m_ItemName        = settings.Name;
         m_ItemDescription = settings.Description;
         m_IsPriceGold     = settings.GoldCost > 0;
         m_Price           = m_IsPriceGold ? settings.GoldCost : settings.MoneyCost;
         m_Image           = settings.ResearchWidget;
         m_GUID            = settings.GUID;
     }
     else if (itemID != E_ItemID.None)
     {
         ItemSettings settings = ItemSettingsManager.Instance.Get(itemID);
         m_ItemName        = settings.Name;
         m_ItemDescription = settings.Description;
         m_IsPriceGold     = settings.GoldCost > 0;
         m_Price           = m_IsPriceGold ? settings.GoldCost : settings.MoneyCost;
         m_Image           = settings.ResearchWidget;
         m_GUID            = settings.GUID;
     }
     else if (upgradeID != E_UpgradeID.None)
     {
         UpgradeSettings settings = UpgradeSettingsManager.Instance.Get(upgradeID);
         m_ItemName        = settings.Name;
         m_ItemDescription = settings.Description;
         m_IsPriceGold     = settings.GoldCost > 0;
         m_Price           = m_IsPriceGold ? settings.GoldCost : settings.MoneyCost;
         m_Image           = settings.ResearchWidget;
         m_GUID            = settings.GUID;
     }
     else if (perkID != E_PerkID.None)
     {
         PerkSettings settings = PerkSettingsManager.Instance.Get(perkID);
         m_ItemName        = settings.Name;
         m_ItemDescription = settings.Description;
         m_IsPriceGold     = settings.GoldCost > 0;
         m_Price           = m_IsPriceGold ? settings.GoldCost : settings.MoneyCost;
         m_Image           = settings.ResearchWidget;
         m_GUID            = settings.GUID;
     }
     else
     {
         Error("Unknown type!");
     }
 }
Example #18
0
    // IGUIPAGEPLAYERSTATS INTERFACE

    void IGuiPagePlayerStats.Refresh(PlayerPersistantInfo ppi)
    {
        PPIWeaponData weaponData;

        // collected values

        WeaponSettings weapon            = ChooseWeapon(ppi, out weaponData);
        ItemSettings   item              = ChooseItem(ppi);
        PerkSettings   perk              = ChoosePerk(ppi);
        HatSettings    hat               = ChooseHat(ppi);
        SkinSettings   skin              = ChooseSkin(ppi);
        float          totalShots        = weaponData.StatsFire;
        float          totalKills        = weaponData.StatsKills;
        int            killsTextId       = totalKills == 1 ? 01160034 : 01160026;
        int            computedAccurancy = totalShots > 0 ? Mathf.RoundToInt((weaponData.StatsHits / (float)totalShots) * 100) : 0;

        // weapon

        SetImage("WeaponImage", weapon != null ? weapon.ResearchWidget : null);
        SetText("WeaponName", weapon != null && weapon.Name != 0 ? TextDatabase.instance[weapon.Name] : "");
        SetText("Kills_Enum", string.Format(TextDatabase.instance[killsTextId], totalKills));
        SetText("Accuracy_Enum", computedAccurancy.ToString());
        SetText("Headshots_Enum", "N/A" /*weaponData.StatsHeadShots.ToString()*/);
        SetText("Shotsfired_Enum", weaponData.StatsFire.ToString());
        SetText("TotalTime_Enum", "N/A");
        SetText("TotalTime_Units", TextDatabase.instance[01160014]);

        // item

        SetImage("ItemImage", item != null ? item.ShopWidget : null);
        SetText("ItemName", item != null && item.Name != 0 ? TextDatabase.instance[item.Name] : "");

        // perk

        SetImage("PerkImage", perk != null ? perk.ShopWidget : null);
        SetText("PerkName", perk != null && perk.Name != 0 ? TextDatabase.instance[perk.Name] : "");

        // hat

        SetImage("HatImage", hat != null ? hat.ShopWidget : null);
        SetText("HatName", hat != null && hat.Name != 0 ? TextDatabase.instance[hat.Name] : "");

        // skin

        SetImage("SkinImage", skin != null ? skin.ScrollerWidget : null);
        SetText("SkinName", skin != null && skin.Name != 0 ? TextDatabase.instance[skin.Name] : "");
    }
Example #19
0
        protected override void Load()
        {
            ItemSettings section = (ItemSettings)ConfigurationManager.GetSection("Saga.Factory.Items");

            if (section != null)
            {
                foreach (FactoryFileElement element in section.FolderItems)
                {
                    WriteLine("ItemFactory", "Loading item information from: {0} using format {1}", element.Path, element.Reader);
                    LoadParameterizedStreamContent(Saga.Structures.Server.SecurePath(element.Path), element.Reader);
                }
            }
            else
            {
                WriteWarning("XmlSections", "Section {0} was not found", "Saga.Factory.Items");
            }
        }
Example #20
0
    private void OnTriggerEnter(Collider other)
    {
        Item item = other.GetComponent <Item>();

        if (!item)
        {
            return;
        }

        ItemTier tier = item.GetTier();

        ItemSettings settings = GameManager.FindObjectOfType <ItemManager>().GetItemTierSetting(tier);

        GameManager.Instance.TickManager.AddPoints(settings.ScorePerMachineDone * item.GetRuntimeData().MachinesNeededTotal);

        GameObject.Destroy(item.gameObject);
    }
Example #21
0
    public override string GetGadgetAnim(E_ItemID gadget, E_CoverPose coverPose, E_CoverDirection coverDirection)
    {
        ItemSettings setting = ItemSettingsManager.Instance.Get(gadget);

        switch (setting.ItemBehaviour)
        {
// FIX IT
        case E_ItemBehaviour.Throw:
            if (BlackBoard.Cover)
            {
                if (coverDirection == E_CoverDirection.Middle)
                {
                    return(coverPose == E_CoverPose.Stand ? "" : "CoverCrouchThrowCenter");
                }
                else if (coverDirection == E_CoverDirection.Left)
                {
                    return(coverPose == E_CoverPose.Stand ? "CoverStandThrowLeft" : "CoverCrouchThrowLeft");
                }
                else if (coverDirection == E_CoverDirection.Right)
                {
                    return(coverPose == E_CoverPose.Stand ? "CoverStandThrowRight" : "CoverCrouchThrowRight");
                }
            }
            else
            {
                return("RunThrow");                //now we're using the same half-body anim for both idle and move

/*					if ( BlackBoard.MotionType == E_MotionType.Walk || BlackBoard.MotionType == E_MotionType.Run )
 *                                              return "RunThrow";
 *                                      else
 *                      return "IdleThrow";
 */
            }
            break;

        case E_ItemBehaviour.Place:
            return("Drop");
        }

        throw new System.ArgumentOutOfRangeException(" Gadget: " + gadget + " behaviour " + setting.ItemBehaviour);
    }
Example #22
0
        public static void Update(DownloadItemTemplatesResponse templatesResponse)
        {
            RepeatedField <ItemTemplate> templates = templatesResponse.ItemTemplates;

            PokemonMeta.templates.Clear();
            PokemonMeta.templates.AddRange(templates);
            foreach (ItemTemplate template in templates)
            {
                if (template.PokemonSettings != null)
                {
                    PokemonSettings pokemonSettings = template.PokemonSettings;
                    PokemonSettings[pokemonSettings.PokemonId] = pokemonSettings;
                }
                else if (template.MoveSettings != null)
                {
                    MoveSettings moveSettings = template.MoveSettings;
                    MoveSettings[moveSettings.MovementId] = moveSettings;
                }
                else if (template.BadgeSettings != null)
                {
                    BadgeSettings badgeSettings = template.BadgeSettings;
                    BadgeSettings[badgeSettings.BadgeType] = badgeSettings;
                }
                else if (template.ItemSettings != null)
                {
                    ItemSettings itemSettings = template.ItemSettings;
                    ItemSettings[itemSettings.ItemId] = itemSettings;
                }
                else if (template.BattleSettings != null)
                {
                    BattleSettings = template.BattleSettings;
                }
                else if (template.PokemonUpgrades != null)
                {
                    UpgradeSettings = template.PokemonUpgrades;
                }
            }
            //Evolutions.initialize(templates);
            PokemonCpUtils.Initialize(templates);
        }
        protected virtual IEnumerable Action(PXAdapter adapter,
                                             [PXInt]
                                             [PXIntList(new int[] { 1, 2, 3 }, new string[]
        {
            "Update Price",
            "Update Cost",
            "View Restriction Groups"
        })]
                                             int?actionID
                                             )
        {
            switch (actionID)
            {
            case 2:
                if (ItemSettings.Current != null && ItemSettings.Current.PendingStdCostDate != null)
                {
                    ItemSettings.Current.LastStdCost        = ItemSettings.Current.StdCost;
                    ItemSettings.Current.StdCostDate        = ItemSettings.Current.PendingStdCostDate.GetValueOrDefault((DateTime)this.Accessinfo.BusinessDate);
                    ItemSettings.Current.StdCost            = ItemSettings.Current.PendingStdCost;
                    ItemSettings.Current.PendingStdCost     = 0;
                    ItemSettings.Current.PendingStdCostDate = null;
                    ItemSettings.Update(ItemSettings.Current);

                    this.Save.Press();
                }

                break;

            case 3:
                if (Item.Current != null)
                {
                    INAccessDetailByItem graph = CreateInstance <INAccessDetailByItem>();
                    graph.Item.Current = graph.Item.Search <InventoryItem.inventoryCD>(Item.Current.InventoryCD);
                    throw new PXRedirectRequiredException(graph, false, "Restricted Groups");
                }
                break;
            }
            return(adapter.Get());
        }
Example #24
0
    public void SpawnItem(ItemTier tier)
    {
        ItemSettings settings = m_ItemTierSettings[tier];

        int amountOfMachinesRequired = Random.Range(settings.MinAmountMachines, settings.MaxAmountMachines + 1);

        List <MinigameType> machineIndexList = new List <MinigameType>();

        for (int i = 0; i < amountOfMachinesRequired; ++i)
        {
            int randIndex = Mathf.RoundToInt(Random.value * ((int)MinigameType.Count - 1));
            machineIndexList.Add((MinigameType)randIndex);
        }

        ItemRuntimeData runtimeData;

        runtimeData.MachineOrderList    = machineIndexList;
        runtimeData.MachinesNeededTotal = amountOfMachinesRequired;

        // Spawn the actual item
        Spawn(tier, runtimeData, settings);
    }
    public PreviewItem(E_ItemID itemID)
    {
        if (itemID != E_ItemID.None)
        {
            ItemSettings settings = ItemSettingsManager.Instance.Get(itemID);
            m_ItemDescription = TextDatabase.instance[settings.Description];
            m_ItemID          = itemID;

            if ((itemID == E_ItemID.SentryGun) || (itemID == E_ItemID.SentryGunII) || (itemID == E_ItemID.SentryGunRail) ||
                (itemID == E_ItemID.SentryGunRockets))
            {
                m_NumberOfParams = 4;
            }
            else if (itemID == E_ItemID.Mine)
            {
                m_NumberOfParams = 3;
            }
            else if ((itemID == E_ItemID.MineEMP) || (itemID == E_ItemID.MineEMPII) || (itemID == E_ItemID.GrenadeFrag) ||
                     (itemID == E_ItemID.GrenadeFragII) || (itemID == E_ItemID.BoxHealth) || (itemID == E_ItemID.BoxHealthII))
            {
                m_NumberOfParams = 2;
            }
            else if ((itemID == E_ItemID.GrenadeFlash) || (itemID == E_ItemID.GrenadeEMP) || (itemID == E_ItemID.GrenadeEMPII) ||
                     (itemID == E_ItemID.EnemyDetector) || (itemID == E_ItemID.EnemyDetectorII) || (itemID == E_ItemID.BoxAmmo) ||
                     (itemID == E_ItemID.BoxAmmoII))
            {
                m_NumberOfParams = 1;
            }
            else if (itemID == E_ItemID.BoosterAccuracy || itemID == E_ItemID.BoosterArmor || itemID == E_ItemID.BoosterSpeed ||
                     itemID == E_ItemID.BoosterDamage)
            {
                m_NumberOfParams = 2;
            }
            else
            {
                m_NumberOfParams = 1;
            }
        }
    }
 private void Awake()
 {
     Root          = FindObjectOfType <ItemRoot>();
     _catcher      = GameObject.FindObjectOfType <Catcher>();
     _itemSettings = ComponentUtility.FindOnNamedGameObject <ItemSettings>();
 }
Example #27
0
 // Superseded function.
 public bool AppendMenu(int ID, String Item, ItemSettings Settings)
 {
     return(apiAppendMenu(m_SysMenu, (int)Settings, ID, Item) == 0);
 }
Example #28
0
 // Insert a menu at the given position. The value of the position
 // depends on the value of Flags. See the article for a detailed
 // description.
 public bool InsertMenu(int Pos, ItemSettings Settings, int ID, String Item)
 {
     return(apiInsertMenu(m_SysMenu, Pos, (Int32)Settings, ID, Item) == 0);
 }
 void Awake()
 {
     GameObject gameObject = new GameObject(this.name + "Target");
     TargetTransform = gameObject.GetComponent<Transform>();
     TargetTransform.position = GetComponent<Item>().transform.position;
     TargetTransform.forward = GetComponent<Item>().transform.forward;
     AttachPointArray = GetComponentsInChildren<AttachPoint>();
     _itemSettings = ComponentUtility.FindOnNamedGameObject<ItemSettings>();
 }
        private void Awake()
        {
            //TODO make items be generator through something else and automatically hooked up to this
            Root = FindObjectOfType<ItemRoot>();
            _itemSettings = ComponentUtility.FindOnNamedGameObject<ItemSettings>();

            MeshRendererArray = this.GetComponentsInChildren<MeshRenderer>();

            MeshArray = new Mesh[MeshRendererArray.Length];
            for (int i = 0; i < MeshArray.Length; ++i)
            {
                MeshArray[i] = MeshRendererArray[i].GetComponent<MeshFilter>().sharedMesh;
            }

            MeshTransformArray = new Transform[MeshRendererArray.Length];
            for (int i = 0; i < MeshTransformArray.Length; ++i)
            {
                MeshTransformArray[i] = MeshRendererArray[i].GetComponent<Transform>();
            }

            MaterialArrayInitialize();
            ColliderArrayInitialize();

            _catcher = GameObject.FindObjectOfType<Catcher>();
        }
 private void Awake()
 {
     ItemSnapArray = GetComponentsInChildren<ItemSnap>();
     _itemSettings = ComponentUtility.FindOnNamedGameObject<ItemSettings>();
 }
 private void Awake()
 {
     Root = FindObjectOfType<ItemRoot>();
     _catcher = GameObject.FindObjectOfType<Catcher>();
     _itemSettings = ComponentUtility.FindOnNamedGameObject<ItemSettings>();
 }
Example #33
0
        private static void FirstRunConfiguration()
        {
            IPAddress     gatewayip           = IPAddress.Loopback;
            int           gatewayport         = 64003;
            IPAddress     mapip               = IPAddress.Loopback;
            byte          worldid             = 0;
            int           mapport             = 64002;
            int           playerlimit         = 60;
            string        databaseusername    = "******";
            string        databasepassword    = "******";
            uint          dbport              = 3306;
            int           cexprates           = 1;
            int           jexprates           = 1;
            int           wexprates           = 1;
            int           droprates           = 1;
            string        databasename        = "saga_world";
            string        dbhost              = "localhost";
            string        dbprovider          = "Saga.Map.Data.Mysql.dll, Saga.Map.Data.Mysql.MysqlProvider";
            string        proof               = "c4ca4238a0b923820dcc509a6f75849b";
            string        questplugin         = "Saga.Map.Data.LuaQuest.dll, Saga.Map.Data.LuaQuest.LuaQuestProvider";
            string        scenarioquestplugin = "Saga.Map.Data.LuaQuest.dll, Saga.Map.Data.LuaQuest.ScenarioLuaQuest";
            string        worldspawn          = "Saga.Map.Plugins.dll, Saga.Map.Plugins.MultifileSpawnWorldObjects";
            string        multiworldspawn     = "Saga.Map.Plugins.dll, Saga.Map.Plugins.MultifileSpawnMultiWorldObjects";
            string        eventprovider       = "Saga.Map.Data.LuaQuest.dll, Saga.Map.Data.LuaQuest.EventInfo";
            ConsoleReader reader              = new ConsoleReader();

            reader.Clear(null);

            System.Configuration.Configuration b = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            if (CheckConfigExists() == false)
            {
                Console.WriteLine("First time run-configuration");
                char key;

                #region Always Configure

                ConfigureRequired("What is the world id of this server?");
                while (!byte.TryParse(Console.ReadLine(), out worldid))
                {
                    Console.WriteLine("Incorrect value please use an number between 0–255");
                }

                ConfigureRequired("What is the player limit of this server?");
                while (!int.TryParse(Console.ReadLine(), out playerlimit))
                {
                    Console.WriteLine("Incorrect value please use an valid number");
                }

                ConfigureRequired("What is the authentication proof of this server?");
                MD5           md5      = MD5.Create();
                byte[]        block    = Encoding.UTF8.GetBytes(Console.ReadLine());
                byte[]        md5block = md5.ComputeHash(block);
                StringBuilder builder  = new StringBuilder();
                foreach (byte c in md5block)
                {
                    builder.AppendFormat("{0:X2}", c);
                }
                proof = builder.ToString();

                ConfigureRequired("What are the cexp-rates?");
                while (!int.TryParse(Console.ReadLine(), out cexprates))
                {
                    Console.WriteLine("Incorrect value please use an between 1 and 20");
                }
                cexprates = Math.Min(20, Math.Max(cexprates, 1));

                ConfigureRequired("What are the jexp-rates?");
                while (!int.TryParse(Console.ReadLine(), out jexprates))
                {
                    Console.WriteLine("Incorrect value please use an between 1 and 20");
                }
                jexprates = Math.Min(20, Math.Max(jexprates, 1));

                ConfigureRequired("What are the wexp-rates?");
                while (!int.TryParse(Console.ReadLine(), out wexprates))
                {
                    Console.WriteLine("Incorrect value please use an between 1 and 20");
                }
                wexprates = Math.Min(20, Math.Max(wexprates, 1));

                ConfigureRequired("What are the item drop-rates?");
                while (!int.TryParse(Console.ReadLine(), out droprates))
                {
                    Console.WriteLine("Incorrect value please use an between 1 and 20");
                }
                droprates = Math.Min(20, Math.Max(droprates, 1));

                ConfigureRequired("Detect database plugin");
                dbprovider = FindPlugin(typeof(IDatabase), dbprovider);

                ConfigureRequired("Detect quest plugin");
                questplugin = FindPlugin(typeof(Saga.Quests.IQuest), questplugin);

                ConfigureRequired("Detect scenarion quest plugin");
                scenarioquestplugin = FindPlugin(typeof(Saga.Quests.ISceneraioQuest), scenarioquestplugin);

                ConfigureRequired("Detect npc & map spawn plugin");
                worldspawn = FindPlugin(typeof(Saga.Factory.SpawnWorldObjects), worldspawn);

                ConfigureRequired("Detect mob spawn plugin");
                multiworldspawn = FindPlugin(typeof(Saga.Factory.SpawnMultiWorldObjects), multiworldspawn);

                ConfigureRequired("Detect event plugin");
                eventprovider = FindPlugin(typeof(Saga.Factory.EventManager.BaseEventInfo), eventprovider);

                #endregion Always Configure

                #region Network Settings

ConfigureGatewayNetwork:
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("Do you wan to configure the gateway-map network settings? Y/N");
                Console.ResetColor();
                key = Console.ReadKey(true).KeyChar;
                if (key == 'y')
                {
                    Console.WriteLine("What ip should the gateway-map server listen to?");
                    while (!IPAddress.TryParse(Console.ReadLine(), out gatewayip))
                    {
                        Console.WriteLine("Incorrect value please use an ipv4 adress, recommended 0.0.0.0");
                    }

                    Console.WriteLine("What port should the gateway-map server listen to?");
                    while (!int.TryParse(Console.ReadLine(), out gatewayport))
                    {
                        Console.WriteLine("Incorrect value please use an number between 1024–49151, recommended 64003");
                    }
                }
                else if (key != 'n')
                {
                    goto ConfigureGatewayNetwork;
                }

ConfigureWorldNetwork:
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("Do you wan to configure the authentication-map network settings? Y/N");
                Console.ResetColor();
                key = Console.ReadKey(true).KeyChar;
                if (key == 'y')
                {
                    Console.WriteLine("What ip should the authentication-map server listen to?");
                    while (!IPAddress.TryParse(Console.ReadLine(), out mapip))
                    {
                        Console.WriteLine("Incorrect value please use an ipv4 adress, recommended 0.0.0.0");
                    }

                    Console.WriteLine("On what port is the authentication server listening");
                    while (!int.TryParse(Console.ReadLine(), out mapport))
                    {
                        Console.WriteLine("Incorrect value please use an number between 1024–49151, recommended 64002");
                    }
                }
                else if (key != 'n')
                {
                    goto ConfigureWorldNetwork;
                }

                #endregion Network Settings

                #region Database Settings

DatabaseName:
                ConfigureOptional("Do you want to configure the database settings? Y/N");
                key = Console.ReadKey(true).KeyChar;
                if (key == 'y')
                {
                    ConfigureRequired("What is the database name?");
                    databasename = Console.ReadLine();

                    ConfigureRequired("What is the database username?");
                    databaseusername = Console.ReadLine();

                    ConfigureRequired("What is the database password?");
                    databasepassword = Console.ReadLine();

                    ConfigureRequired("What is the database port?");
                    while (!uint.TryParse(Console.ReadLine(), out dbport))
                    {
                        Console.WriteLine("Incorrect value please use an number between 1024–49151, recommended 3306");
                    }

                    ConfigureRequired("What is the database host?");
                    dbhost = Console.ReadLine();
                }
                else if (key != 'n')
                {
                    goto DatabaseName;
                }

                #endregion Database Settings



                #region Plugin detection

PluginDetection:
                ConfigureOptional("Do you want to dectect other plugins?");
                key = Console.ReadKey(true).KeyChar;
                if (key == 'y')
                {
                    Console.WriteLine("no plugins detected");
                }
                else if (key != 'n')
                {
                    goto PluginDetection;
                }

                #endregion Plugin detection

                //CONFIGURE SERVER SETTINGS
                ServerVars serverVarsConfiguration = new ServerVars();
                serverVarsConfiguration.DataDirectory = "../Data/";
                b.Sections.Add("Saga.ServerVars", serverVarsConfiguration);

                //CONFIGURE NETWORK SETTINGS
                NetworkSettings       networkSettings = new NetworkSettings();
                NetworkFileCollection collection      = networkSettings.Connections;
                collection["public"]   = new NetworkElement("public", gatewayip.ToString(), gatewayport);
                collection["internal"] = new NetworkElement("internal", mapip.ToString(), mapport);
                b.Sections.Remove("Saga.Manager.NetworkSettings");
                b.Sections.Add("Saga.Manager.NetworkSettings", networkSettings);
                networkSettings.WorldId     = worldid;
                networkSettings.Proof       = proof;
                networkSettings.PlayerLimit = playerlimit;

                //CONFIGURE CONSOLE SETTING
                ConsoleSettings consoleSettings = new ConsoleSettings();
                consoleSettings.CommandPrefix = "@";
                consoleSettings.GmCommands.Add(new FactoryFileElement("Saga.Scripting.Console.Broadcast"));
                consoleSettings.GmCommands.Add(new FactoryFileElement("Saga.Scripting.Console.Position"));
                consoleSettings.GmCommands.Add(new FactoryFileElement("Saga.Scripting.Console.ChatMute"));
                consoleSettings.GmCommands.Add(new FactoryFileElement("Saga.Scripting.Console.GmWarptomap"));
                consoleSettings.GmCommands.Add(new FactoryFileElement("Saga.Scripting.Console.PlayerJump"));
                consoleSettings.GmCommands.Add(new FactoryFileElement("Saga.Scripting.Console.PlayerCall"));
                consoleSettings.GmCommands.Add(new FactoryFileElement("Saga.Scripting.Console.Speed"));
                consoleSettings.GmCommands.Add(new FactoryFileElement("Saga.Scripting.Console.GarbageCollector"));
                consoleSettings.GmCommands.Add(new FactoryFileElement("Saga.Scripting.Console.ClearNpc"));
                consoleSettings.GmCommands.Add(new FactoryFileElement("Saga.Scripting.Console.KickAll"));
                consoleSettings.GmCommands.Add(new FactoryFileElement("Saga.Scripting.Console.Kick"));
                consoleSettings.GmCommands.Add(new FactoryFileElement("Saga.Scripting.Console.Time"));
                consoleSettings.GmCommands.Add(new FactoryFileElement("Saga.Scripting.Console.ShowMaintenance"));
                consoleSettings.GmCommands.Add(new FactoryFileElement("Saga.Scripting.Console.ScheduleMaintenance"));
                consoleSettings.GmCommands.Add(new FactoryFileElement("Saga.Scripting.Console.SetGmLevel"));
                consoleSettings.GmCommands.Add(new FactoryFileElement("Saga.Scripting.Console.Spawn"));
                consoleSettings.GmCommands.Add(new FactoryFileElement("Saga.Scripting.Console.Unspawn"));
                consoleSettings.GmCommands.Add(new FactoryFileElement("Saga.Scripting.Console.GiveItem"));
                consoleSettings.GmCommands.Add(new FactoryFileElement("Saga.Scripting.Console.QStart"));
                consoleSettings.GmCommands.Add(new FactoryFileElement("Saga.Scripting.Console.Kill"));
                consoleSettings.GmCommands.Add(new FactoryFileElement("Saga.Scripting.Console.Worldload"));
                consoleSettings.GmCommands.Add(new FactoryFileElement("Saga.Scripting.Console.Gmgo"));
                b.Sections.Add("Saga.Manager.ConsoleSettings", consoleSettings);

                //PORTALS
                PortalSettings portalSettings = new PortalSettings();
                portalSettings.FolderItems.Add(new FactoryFileElement("~/portal_data.csv", "text/csv"));
                b.Sections.Remove("Saga.Factory.Portals");
                b.Sections.Add("Saga.Factory.Portals", portalSettings);

                //CHARACTERCONFIGURATION
                CharacterConfigurationSettings characterconfigurationSettings = new CharacterConfigurationSettings();
                characterconfigurationSettings.FolderItems.Add(new FactoryFileElement("~/character-template.csv", "text/csv"));
                b.Sections.Remove("Saga.Factory.CharacterConfiguration");
                b.Sections.Add("Saga.Factory.CharacterConfiguration", characterconfigurationSettings);

                //ADDITION
                AdditionSettings additionSettings = new AdditionSettings();
                additionSettings.FolderItems.Add(new FactoryFileElement("~/Addition_t.xml", "text/xml"));
                additionSettings.Reference = "~/addition_reference.csv";
                b.Sections.Remove("Saga.Factory.Addition");
                b.Sections.Add("Saga.Factory.Addition", additionSettings);

                //SPELLS
                SpellSettings spellSettings = new SpellSettings();
                spellSettings.FolderItems.Add(new FactoryFileElement("~/spell_data.xml", "text/xml"));
                spellSettings.Reference = "~/skill_reference.csv";
                b.Sections.Remove("Saga.Factory.Spells");
                b.Sections.Add("Saga.Factory.Spells", spellSettings);

                //STATUSBYLEVEL
                StatusByLevelSettings statusbylevelSettings = new StatusByLevelSettings();
                statusbylevelSettings.FolderItems.Add(new FactoryFileElement("~/experience.csv", "text/csv"));
                statusbylevelSettings.Cexp     = cexprates;
                statusbylevelSettings.Jexp     = jexprates;
                statusbylevelSettings.Wexp     = wexprates;
                statusbylevelSettings.Droprate = droprates;

                b.Sections.Remove("Saga.Factory.StatusByLevel");
                b.Sections.Add("Saga.Factory.StatusByLevel", statusbylevelSettings);

                //WARPSETTINGS
                WarpSettings warpSettings = new WarpSettings();
                warpSettings.FolderItems.Add(new FactoryFileElement("~/warp_data.csv", "text/csv"));
                b.Sections.Remove("Saga.Factory.Warps");
                b.Sections.Add("Saga.Factory.Warps", warpSettings);

                //ZONES
                ZoneSettings zoneSettings = new ZoneSettings();
                zoneSettings.FolderItems.Add(new FactoryFileElement("~/zone_data.csv", "text/csv"));
                zoneSettings.Directory = "../Data/heightmaps";
                b.Sections.Remove("Saga.Factory.Zones");
                b.Sections.Add("Saga.Factory.Zones", zoneSettings);

                //ITEMS
                ItemSettings itemSettings = new ItemSettings();
                itemSettings.FolderItems.Add(new FactoryFileElement("~/item_data.xml", "text/xml"));
                b.Sections.Remove("Saga.Factory.Items");
                b.Sections.Add("Saga.Factory.Items", itemSettings);

                //WEAPONARY
                WeaponarySettings weaponarySettings = new WeaponarySettings();
                weaponarySettings.FolderItems.Add(new FactoryFileElement("~/weapon_data.csv", "text/csv"));
                b.Sections.Remove("Saga.Factory.Weaponary");
                b.Sections.Add("Saga.Factory.Weaponary", weaponarySettings);

                //SPAWNTEMPLATE
                SpawntemplateSettings spawntemplateSettings = new SpawntemplateSettings();
                spawntemplateSettings.FolderItems.Add(new FactoryFileElement("~/npc_templates.csv", "text/csv"));
                spawntemplateSettings.FolderItems.Add(new FactoryFileElement("~/item_templates.csv", "text/csv"));
                b.Sections.Remove("Saga.Factory.SpawnTemplate");
                b.Sections.Add("Saga.Factory.SpawnTemplate", spawntemplateSettings);

                //SPAWNS NPC & MAP
                SpawnWorldObjectSettings spawnworldobjectSettings = new SpawnWorldObjectSettings();
                spawnworldobjectSettings.FolderItems.Add(new FactoryFileElement("~/npc-spawns/", "text/csv"));
                spawnworldobjectSettings.FolderItems.Add(new FactoryFileElement("~/item-spawns/", "text/csv"));
                spawnworldobjectSettings.DerivedType = worldspawn;
                b.Sections.Remove("Saga.Factory.SpawnWorldObjects");
                b.Sections.Add("Saga.Factory.SpawnWorldObjects", spawnworldobjectSettings);

                //SPAWNS MOBS
                SpawnMultiWorldObjectSettings spawnmultiworldobjectSettings = new SpawnMultiWorldObjectSettings();
                spawnmultiworldobjectSettings.FolderItems.Add(new FactoryFileElement("~/mob-spawns/", "text/csv"));
                spawnmultiworldobjectSettings.DerivedType = multiworldspawn;
                b.Sections.Remove("Saga.Factory.SpawnMultiWorldObjects");
                b.Sections.Add("Saga.Factory.SpawnMultiWorldObjects", spawnmultiworldobjectSettings);

                //SCRIPTING
                ScriptingSettings scriptingSettings = new ScriptingSettings();
                scriptingSettings.Directory = "../Saga.Scripting";
                scriptingSettings.Assemblies.Add(new FactoryFileElement("System.dll", "text/csv"));
                scriptingSettings.Assemblies.Add(new FactoryFileElement("System.Data.dll", "text/csv"));
                scriptingSettings.Assemblies.Add(new FactoryFileElement("System.Xml.dll", "text/csv"));
                b.Sections.Remove("Saga.Manager.Scripting");
                b.Sections.Add("Saga.Manager.Scripting", scriptingSettings);

                //EVENTS
                EventSettings eventSettings = new EventSettings();
                eventSettings.FolderItems.Add(new FactoryFileElement("~/eventlist.csv", "text/csv"));
                eventSettings.Provider = eventprovider;
                b.Sections.Remove("Saga.Factory.Events");
                b.Sections.Add("Saga.Factory.Events", eventSettings);

                //QUUESTS
                QuestSettings questSettings = new QuestSettings();
                questSettings.Directory        = "../Quests/";
                questSettings.SDirectory       = "~/Scenario.Quests/";
                questSettings.Provider         = questplugin;
                questSettings.ScenarioProvider = scenarioquestplugin;
                b.Sections.Remove("Saga.Manager.Quest");
                b.Sections.Add("Saga.Manager.Quest", questSettings);

                //DATABASE SETTINGS
                DatabaseSettings databaseSettings = new DatabaseSettings();
                databaseSettings.Database = databasename;
                databaseSettings.Username = databaseusername;
                databaseSettings.Password = databasepassword;
                databaseSettings.Port     = dbport;
                databaseSettings.Host     = dbhost;
                databaseSettings.DBType   = dbprovider;
                b.Sections.Remove("Saga.Manager.Database");
                b.Sections.Add("Saga.Manager.Database", databaseSettings);

                //SAVE CONFIGURATION AND REFRESH ALL SECTIONS
                b.Save();

                //REFRESH ALL SECTIONS
                ConfigurationManager.RefreshSection("Saga.Factory.SpawnMultiWorldObjects");
                ConfigurationManager.RefreshSection("Saga.Manager.Database");
                ConfigurationManager.RefreshSection("Saga.Manager.Quest");
                ConfigurationManager.RefreshSection("Saga.Manager.Scripting");
                ConfigurationManager.RefreshSection("Saga.Factory.Events");
                ConfigurationManager.RefreshSection("Saga.Factory.SpawnWorldObject");
                ConfigurationManager.RefreshSection("Saga.ServerVars");
                ConfigurationManager.RefreshSection("Saga.Manager.NetworkSettings");
                ConfigurationManager.RefreshSection("Saga.Manager.ConsoleSettings");
                ConfigurationManager.RefreshSection("Saga.Factory.Portals");
                ConfigurationManager.RefreshSection("Saga.Factory.CharacterConfiguration");
                ConfigurationManager.RefreshSection("Saga.Factory.Addition");
                ConfigurationManager.RefreshSection("Saga.Factory.Spells");
                ConfigurationManager.RefreshSection("Saga.Factory.StatusByLevel");
                ConfigurationManager.RefreshSection("Saga.Factory.Warps");
                ConfigurationManager.RefreshSection("Saga.Factory.Zones");
                ConfigurationManager.RefreshSection("Saga.Factory.Items");
                ConfigurationManager.RefreshSection("Saga.Factory.Weaponary");
                ConfigurationManager.RefreshSection("Saga.Factory.SpawnTemplate");

                Console.WriteLine("Everything configured");
            }
        }
Example #34
0
    //Funkce pro fixnuti equipu na ppi
    //Projdeme casti equipu ktere by nemuseli byt validni a vytvorime seznam akci ktere je treba vykonat aby byl zase v poradku.
    //Pokud je vse v poradku, vraci null, jinak serial cloud action ktera se ma provest
    public static BaseCloudAction ValidateEquip()
    {
        List <BaseCloudAction> outActions = new List <BaseCloudAction>();
        PlayerPersistantInfo   ppi        = ShopDataBridge.Instance.PPI;
        UnigueUserID           userID     = CloudUser.instance.authenticatedUserID;

        //weapons:
        //bool anyWeaponEquipped = false;
        foreach (PPIWeaponData w in ppi.EquipList.Weapons)
        {
            //ignoruj prazdna id
            if (w.ID == E_WeaponID.None)
            {
                continue;
            }

            //pokud je item zakazany, nebo ma locknuty slot, odstran ho z equipu.
            WeaponSettings s = WeaponSettingsManager.Instance.Get(w.ID);
            if (s.DISABLED || ShopDataBridge.Instance.IsWeaponSlotLocked(w.EquipSlotIdx))
            {
                //unequip it
                outActions.Add(new SlotEquipAction(userID, s.GUID, w.EquipSlotIdx, false));
                continue;
            }

            //	anyWeaponEquipped = true;
        }

        /* we don't need this functionality right now,
         * because we don't allow player to spawn without any weapon now
         * //pokud nemame equpnutou zadnou zbran, pridej nejakou do prvniho slotu
         * if(!anyWeaponEquipped)
         * {
         *      List<ShopItemId> ownedWeapons = ShopDataBridge.Instance.GetOwnedWeapons();
         *      if(ownedWeapons.Count > 0)
         *      {
         *              int guid = ShopDataBridge.Instance.GetShopItemGUID(ownedWeapons[0]);
         *              outActions.Add(new SlotEquipAction(userID, guid, 0, true ));
         *      }
         * }*/

        //items:
        foreach (PPIItemData w in ppi.EquipList.Items)
        {
            //ignoruj prazdna id
            if (w.ID == E_ItemID.None)
            {
                continue;
            }

            //pokud je item zakazany, nebo ma locknuty slot, odstran ho z equipu.
            ItemSettings s = ItemSettingsManager.Instance.Get(w.ID);
            if (s.DISABLED || ShopDataBridge.Instance.IsItemSlotLocked(w.EquipSlotIdx))
            {
                //unequip it
                outActions.Add(new SlotEquipAction(userID, s.GUID, w.EquipSlotIdx, false));
                continue;
            }

            //pokud mame od itemu v inventari lepsi nebo naopak horsi verzi, updatni jej ve slotu.
            E_ItemID bestVersion = ShopDataBridge.Instance.FindBestItemUpgrade(w.ID);
            if (w.ID != bestVersion)
            {
                //replace it with actual version from inventory
                int bestVersionGUID = ItemSettingsManager.Instance.Get(bestVersion).GUID;
                outActions.Add(new SlotEquipAction(userID, bestVersionGUID, w.EquipSlotIdx, true));
                continue;
            }
        }

        //perk:
        if (ppi.EquipList.Perk != E_PerkID.None)
        {
            E_PerkID perk        = ppi.EquipList.Perk;
            E_PerkID bestVersion = ShopDataBridge.Instance.FindBestPerkUpgrade(ppi.EquipList.Perk);

            //pokud je zakazany, odstran jej ze slotu
            PerkSettings s = PerkSettingsManager.Instance.Get(perk);
            if (s.DISABLED)
            {
                //unequip it
                outActions.Add(new SlotEquipAction(userID, s.GUID, 0, false));
            }
            else if (perk != bestVersion)
            {
                //replace it with actual version from inventory
                int bestVersionGUID = PerkSettingsManager.Instance.Get(bestVersion).GUID;
                outActions.Add(new SlotEquipAction(userID, bestVersionGUID, 0, true));
            }
        }

        //skins:
        {
            ShopItemId        currSkin   = new ShopItemId((int)ppi.EquipList.Outfits.Skin, GuiShop.E_ItemType.Skin);
            List <ShopItemId> ownedSkins = ShopDataBridge.Instance.GetOwnedSkins();
            if (!ownedSkins.Contains(currSkin))
            {
                //Debug.Log("Equiped skin " + currSkin + " is not in inventory, switching to: " + ( (ownedSkins.Count > 0) ? ownedSkins[0].ToString() : "-none-") );

                if (ownedSkins.Count > 0)
                {
                    //equipnuty skin neni v inventari, vyber misto neho nejaky jiny
                    ownedSkins.Sort();
                    int guid = ShopDataBridge.Instance.GetShopItemGUID(ownedSkins[0]);
                    outActions.Add(new SlotEquipAction(userID, guid, 0, true));
                }
                else
                {
                    Debug.LogError("No skins in inventory!");
                }
            }
        }

        //upgrades:
        {
            List <PPIUpgradeList.UpgradeData> upgs = ppi.Upgrades.Upgrades;
            if (upgs.Find(u => u.ID == E_UpgradeID.ItemSlot2).ID != E_UpgradeID.ItemSlot2)
            {
                int guid = ShopDataBridge.Instance.GetShopItemGUID(new ShopItemId((int)E_UpgradeID.ItemSlot2, GuiShop.E_ItemType.Upgrade));
                outActions.Add(new ShopBuyAction(userID, guid));
            }

            if (upgs.Find(u => u.ID == E_UpgradeID.WeaponSlot2).ID != E_UpgradeID.WeaponSlot2)
            {
                int guid = ShopDataBridge.Instance.GetShopItemGUID(new ShopItemId((int)E_UpgradeID.WeaponSlot2, GuiShop.E_ItemType.Upgrade));
                outActions.Add(new ShopBuyAction(userID, guid));
            }
        }

        //pokud jsme neco zmenili, updatuj na zaver PPI
        if (outActions.Count > 0)
        {
            outActions.Add(new FetchPlayerPersistantInfo(userID));
            BaseCloudAction resultAction = new CloudActionSerial(userID, BaseCloudAction.NoTimeOut, outActions.ToArray());
            return(resultAction);
        }
        else
        {
            return(null);
        }
    }