Ejemplo n.º 1
0
            public override void Execute()
            {
                bool copyBitmaps = false;

                for (int i = 0; i < Owner.MaxObjects; i++)
                {
                    if (Owner.WorldObjects.Host[i].life > 0)
                    {
                        Owner.WorldObjects.Host[i].position += Owner.WorldObjects.Host[i].velocity;

                        float2 pos  = Owner.WorldObjects.Host[i].position;
                        float  size = Owner.WorldObjects.Host[i].size;

                        if (pos.x < -1 - size || pos.x > 1 + size || pos.y < -1 - size || pos.y > 1 + size)
                        {
                            Owner.WorldObjects.Host[i].life = 0;
                        }
                        else
                        {
                            Owner.WorldObjects.Host[i].life--;
                        }
                    }

                    if (Owner.WorldObjects.Host[i].life <= 0 && m_random.NextDouble() < CreateObjectChance)
                    {
                        MyWorldObject newObject = new MyWorldObject();

                        newObject.life     = (int)(m_random.NextDouble() * MaxLife);
                        newObject.size     = (float)m_random.NextDouble() * (MaxSize - MinSize) + MinSize;
                        newObject.position = new float2((float)m_random.NextDouble() * 2 - 1, (float)m_random.NextDouble() * 2 - 1);

                        if (m_random.NextDouble() > StaticObjectChance)
                        {
                            newObject.velocity = new float2((float)m_random.NextDouble() * 2 - 1, (float)m_random.NextDouble() * 2 - 1);

                            float velocitySize = (float)(
                                (m_random.NextDouble() * (MaxVelocity - MinVelocity) + MinVelocity) /
                                Math.Sqrt(newObject.velocity.x * newObject.velocity.x + newObject.velocity.y * newObject.velocity.y)
                                );
                            newObject.velocity *= velocitySize;
                        }

                        IExample example = m_dataset.GetNext();
                        Array.Copy(example.Input, 0, Owner.Bitmaps.Host, i * IMG_WIDTH * IMG_WIDTH, IMG_WIDTH * IMG_WIDTH);
                        copyBitmaps = true;
                        CudaDeviceVariable <float> devBitmaps = Owner.Bitmaps.GetDevice(Owner);

                        newObject.bitmap = devBitmaps.DevicePointer + (devBitmaps.TypeSize * i * IMG_WIDTH * IMG_WIDTH);

                        Owner.WorldObjects.Host[i] = newObject;
                    }
                }

                Owner.WorldObjects.SafeCopyToDevice();

                if (copyBitmaps)
                {
                    Owner.Bitmaps.SafeCopyToDevice();
                }
            }
Ejemplo n.º 2
0
        void WorldFilter_ChangeObject(object sender, ChangeObjectEventArgs e)
        {
            try
            {
                if (e.Change != WorldChangeType.IdentReceived)
                {
                    return;
                }

                for (int row = 0; row < tinkeringList.RowCount; row++)
                {
                    int id;

                    if (int.TryParse(((HudStaticText)tinkeringList[row][6]).Text, out id) && id == e.Changed.Id)
                    {
                        MyWorldObject mwo = MyWorldObjectCreator.Create(e.Changed);

                        ((HudStaticText)tinkeringList[row][3]).Text = mwo.Workmanship.ToString(CultureInfo.InvariantCulture);
                        ((HudStaticText)tinkeringList[row][4]).Text = mwo.Tinks.ToString(CultureInfo.InvariantCulture);

                        return;
                    }
                }
            }
            catch (Exception ex) { Debug.LogException(ex); }
        }
Ejemplo n.º 3
0
        void TinkeringStart_Hit(object sender, EventArgs e)
        {
            try
            {
                if (running)
                {
                    return;
                }

                running = true;

                foreach (var wo in CoreManager.Current.WorldFilter.GetInventory())
                {
                    if (wo.ObjectClass == ObjectClass.Salvage && !wo.HasIdData)
                    {
                        MyWorldObject mwo = MyWorldObjectCreator.Create(wo);

                        if (mwo.Material == ((HudStaticText)tinkeringMaterial[tinkeringMaterial.Current]).Text)
                        {
                            CoreManager.Current.Actions.RequestId(wo.Id);
                        }
                    }
                }

                timer.Start();
            }
            catch (Exception ex) { Debug.LogException(ex); }
        }
Ejemplo n.º 4
0
            public override void Execute()
            {
                Owner.Visual.Fill(0);

                for (int i = 0; i < Owner.MaxObjects; i++)
                {
                    MyWorldObject wo = Owner.WorldObjects.Host[i];

                    if (wo.life > 0)
                    {
                        CudaDeviceVariable <MyWorldObject> devWO = Owner.WorldObjects.GetDevice(Owner);
                        m_kernel.Run(Owner.Visual, wo.bitmap, devWO.DevicePointer + devWO.TypeSize * i, Owner.VisualWidth, Owner.VisualHeight, IMG_WIDTH, IMG_WIDTH);
                    }
                }
            }
Ejemplo n.º 5
0
        void timer_Tick(object sender, EventArgs e)
        {
            try
            {
                if (!running)
                {
                    return;
                }

                if (CoreManager.Current.Actions.CombatMode != CombatState.Peace)
                {
                    TinkeringStop_Hit(null, null);
                    return;
                }

                if (CoreManager.Current.Actions.BusyState != 0)
                {
                    return;
                }

                // Do we have bags of salvage without id data?
                foreach (var wo in CoreManager.Current.WorldFilter.GetInventory())
                {
                    if (wo.ObjectClass == ObjectClass.Salvage && !wo.HasIdData)
                    {
                        MyWorldObject mwo = MyWorldObjectCreator.Create(wo);

                        if (mwo.Material == ((HudStaticText)tinkeringMaterial[tinkeringMaterial.Current]).Text)
                        {
                            CoreManager.Current.Actions.RequestId(wo.Id);
                            return;
                        }
                    }
                }

                TinkeringStop_Hit(null, null);
            }
            catch (Exception ex) { Debug.LogException(ex); }
        }
Ejemplo n.º 6
0
 public ItemInfo(WorldObject worldObject)
 {
     wo  = worldObject;
     mwo = MyWorldObjectCreator.Create(worldObject);
 }
Ejemplo n.º 7
0
        private void LogItem(WorldObject item)
        {
            if (itemsLogged.Contains(item.Id))
            {
                return;
            }

            itemsLogged.Add(item.Id);

            DirectoryInfo pluginPersonalFolder = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + @"\Decal Plugins\Mag-LootLogger");

            if (!pluginPersonalFolder.Exists)
            {
                pluginPersonalFolder.Create();
            }

            FileInfo logFile = new FileInfo(pluginPersonalFolder.FullName + @"\Loot.csv");

            if (!logFile.Exists)
            {
                using (StreamWriter writer = new StreamWriter(logFile.FullName, true))
                {
                    writer.WriteLine("Timestamp,Container,Id,Name,ObjectClass,EquipSkill,MasteryBonus,DamageType,Variance,MaxDamage,ElementalDmgBonus,DamageBonus,ElementalDamageVersusMonsters,AttackBonus,MeleeDefenseBonus,MagicDBonus,MissileDBonus,ManaCBonus,BuffedMaxDamage,BuffedElementalDmgBonus,BuffedDamageBonus,BuffedElementalDamageVersusMonsters,BuffedAttackBonus,BuffedMeleeDefenseBonus,BuffedManaCBonus,WieldReqValue,Work,Value,Burden");

                    writer.Close();
                }
            }

            using (StreamWriter writer = new StreamWriter(logFile.FullName, true))
            {
                MyWorldObject mwo = MyWorldObjectCreator.Create(item);

                StringBuilder output = new StringBuilder();

                output.Append(String.Format("{0:u}", DateTime.UtcNow) + ",");

                string containerName = CoreManager.Current.WorldFilter[item.Container] != null ? CoreManager.Current.WorldFilter[item.Container].Name : null;
                output.Append('"' + containerName + '"' + ",");

                output.Append(item.Id + ",");
                output.Append('"' + item.Name + '"' + ",");
                output.Append(item.ObjectClass.ToString() + ",");

                string skillName = Constants.SkillInfo.ContainsKey(item.Values(LongValueKey.EquipSkill)) ? Constants.SkillInfo[item.Values(LongValueKey.EquipSkill)] : null;
                output.Append((item.Values(LongValueKey.EquipSkill) > 0 ? skillName : String.Empty) + ",");

                string masteryName = Constants.MasteryInfo.ContainsKey(item.Values((LongValueKey)353)) ? Constants.MasteryInfo[item.Values((LongValueKey)353)] : null;
                output.Append((item.Values((LongValueKey)353) > 0 ? masteryName : String.Empty) + ",");

                if (item.Values(LongValueKey.DamageType) > 0)
                {
                    if ((item.Values(LongValueKey.DamageType) & 1) == 1)
                    {
                        output.Append("Slash");
                    }
                    if ((item.Values(LongValueKey.DamageType) & 2) == 2)
                    {
                        output.Append("Pierce");
                    }
                    if ((item.Values(LongValueKey.DamageType) & 4) == 4)
                    {
                        output.Append("Bludge");
                    }
                    if ((item.Values(LongValueKey.DamageType) & 8) == 8)
                    {
                        output.Append("Cold");
                    }
                    if ((item.Values(LongValueKey.DamageType) & 16) == 16)
                    {
                        output.Append("Fire");
                    }
                    if ((item.Values(LongValueKey.DamageType) & 32) == 32)
                    {
                        output.Append("Acid");
                    }
                    if ((item.Values(LongValueKey.DamageType) & 64) == 64)
                    {
                        output.Append("Electrical");
                    }
                }
                else if (item.Values(LongValueKey.WandElemDmgType) > 0)
                {
                    if ((item.Values(LongValueKey.WandElemDmgType) & 1) == 1)
                    {
                        output.Append("Slash");
                    }
                    if ((item.Values(LongValueKey.WandElemDmgType) & 2) == 2)
                    {
                        output.Append("Pierce");
                    }
                    if ((item.Values(LongValueKey.WandElemDmgType) & 4) == 4)
                    {
                        output.Append("Bludge");
                    }
                    if ((item.Values(LongValueKey.WandElemDmgType) & 8) == 8)
                    {
                        output.Append("Cold");
                    }
                    if ((item.Values(LongValueKey.WandElemDmgType) & 16) == 16)
                    {
                        output.Append("Fire");
                    }
                    if ((item.Values(LongValueKey.WandElemDmgType) & 32) == 32)
                    {
                        output.Append("Acid");
                    }
                    if ((item.Values(LongValueKey.WandElemDmgType) & 64) == 64)
                    {
                        output.Append("Electrical");
                    }
                }
                output.Append(",");

                output.Append((item.Values(DoubleValueKey.Variance) > 0 ? item.Values(DoubleValueKey.Variance).ToString("N3") : String.Empty) + ",");
                output.Append((item.Values(LongValueKey.MaxDamage) > 0 ? item.Values(LongValueKey.MaxDamage).ToString() : String.Empty) + ",");
                output.Append((item.Values(LongValueKey.ElementalDmgBonus, 0) != 0 ? item.Values(LongValueKey.ElementalDmgBonus).ToString() : String.Empty) + ",");
                output.Append((item.Values(DoubleValueKey.DamageBonus, 1) != 1 ? Math.Round(((item.Values(DoubleValueKey.DamageBonus) - 1) * 100)).ToString() : String.Empty) + ",");
                output.Append((item.Values(DoubleValueKey.ElementalDamageVersusMonsters, 1) != 1 ? Math.Round(((item.Values(DoubleValueKey.ElementalDamageVersusMonsters) - 1) * 100)).ToString() : String.Empty) + ",");
                output.Append((item.Values(DoubleValueKey.AttackBonus, 1) != 1 ? Math.Round(((item.Values(DoubleValueKey.AttackBonus) - 1) * 100)).ToString() : String.Empty) + ",");
                output.Append((item.Values(DoubleValueKey.MeleeDefenseBonus, 1) != 1 ? Math.Round(((item.Values(DoubleValueKey.MeleeDefenseBonus) - 1) * 100)).ToString() : String.Empty) + ",");
                output.Append((item.Values(DoubleValueKey.MagicDBonus, 1) != 1 ? Math.Round(((item.Values(DoubleValueKey.MagicDBonus) - 1) * 100), 1).ToString() : String.Empty) + ",");
                output.Append((item.Values(DoubleValueKey.MissileDBonus, 1) != 1 ? Math.Round(((item.Values(DoubleValueKey.MissileDBonus) - 1) * 100), 1).ToString() : String.Empty) + ",");
                output.Append((item.Values(DoubleValueKey.ManaCBonus) != 0 ? Math.Round((item.Values(DoubleValueKey.ManaCBonus) * 100)).ToString() : String.Empty) + ",");

                output.Append((mwo.GetBuffedIntValueKey((int)LongValueKey.MaxDamage) > 0 ? mwo.GetBuffedIntValueKey((int)LongValueKey.MaxDamage).ToString() : String.Empty) + ",");
                output.Append((mwo.GetBuffedIntValueKey((int)LongValueKey.ElementalDmgBonus) > 0 ? mwo.GetBuffedIntValueKey((int)LongValueKey.ElementalDmgBonus).ToString() : String.Empty) + ",");
                output.Append((mwo.GetBuffedDoubleValueKey((int)DoubleValueKey.DamageBonus, 1) != 1 ? Math.Round(((mwo.GetBuffedDoubleValueKey((int)DoubleValueKey.DamageBonus) - 1) * 100)).ToString() : String.Empty) + ",");
                output.Append((mwo.BuffedElementalDamageVersusMonsters != -1 ? Math.Round(((mwo.BuffedElementalDamageVersusMonsters - 1) * 100)).ToString() : String.Empty) + ",");
                output.Append((mwo.BuffedAttackBonus != -1 ? Math.Round(((mwo.BuffedAttackBonus - 1) * 100)).ToString() : String.Empty) + ",");
                output.Append((mwo.BuffedMeleeDefenseBonus != -1 ? Math.Round(((mwo.BuffedMeleeDefenseBonus - 1) * 100)).ToString() : String.Empty) + ",");
                output.Append((mwo.BuffedManaCBonus != -1 ? Math.Round(mwo.BuffedManaCBonus * 100).ToString() : String.Empty) + ",");

                output.Append((item.Values(LongValueKey.WieldReqValue) > 0 ? item.Values(LongValueKey.WieldReqValue).ToString() : String.Empty) + ",");

                output.Append((item.Values(LongValueKey.Workmanship) > 0 ? item.Values(LongValueKey.Workmanship).ToString() : String.Empty) + ",");
                output.Append((item.Values(LongValueKey.Value) > 0 ? item.Values(LongValueKey.Value).ToString() : String.Empty) + ",");
                output.Append((item.Values(LongValueKey.Burden) > 0 ? item.Values(LongValueKey.Burden).ToString() : String.Empty) + ",");

                writer.WriteLine(output);

                writer.Close();
            }
        }