private void setupData(DataRow r)
        {
            int    objectType = int.Parse(r["type"].ToString());
            String oType      = "";

            switch (objectType)
            {
            case 0:
                oType = "Mobs";
                break;

            case 3:
                oType = "Planets";
                break;

            case 11:
                oType = "Stargates";
                break;

            case 12:
                oType = "Starbases";
                break;

            case 37:
                oType = "Decorations";
                break;

            case 38:
                oType = "Harvestables";
                break;
            }

            dp = new StargateProps();

            //Base Props + Nav Point Props
            dp.SectorID         = int.Parse(r["sector_id"].ToString());
            dp.NavType          = r["nav_type"].ToString();
            dp.Signature        = float.Parse(r["signature"].ToString());
            dp.IsHuge           = (Boolean)r["is_huge"];
            dp.BaseXP           = int.Parse(r["base_xp"].ToString());
            dp.ExplorationRange = float.Parse(r["exploration_range"].ToString());

            dp.BaseAssetID = int.Parse(r["base_asset_id"].ToString());

            AdobeColors.HSL hslColor = new AdobeColors.HSL();
            hslColor.H = float.Parse(r["h"].ToString());
            hslColor.S = float.Parse(r["s"].ToString());
            hslColor.L = float.Parse(r["v"].ToString());
            Color newColor = AdobeColors.HSL_to_RGB(hslColor);

            dp.Color = newColor;

            dp.Type      = oType;
            dp.Scale     = float.Parse(r["scale"].ToString());;
            dp.PositionX = float.Parse(r["position_x"].ToString());
            dp.PositionY = float.Parse(r["position_y"].ToString());
            dp.PositionZ = float.Parse(r["position_z"].ToString());;

            double[] quat1 = new double[4];
            quat1[0] = double.Parse(r["orientation_z"].ToString());
            quat1[1] = double.Parse(r["orientation_u"].ToString());
            quat1[2] = double.Parse(r["orientation_v"].ToString());
            quat1[3] = double.Parse(r["orientation_w"].ToString());

            QuaternionCalc qc1 = new QuaternionCalc();

            double[] ang1 = qc1.QuatToAngle(quat1);
            if (ang1[0] == double.NaN)
            {
                ang1[0] = 0;
            }
            if (ang1[1] == double.NaN)
            {
                ang1[1] = 0;
            }
            if (ang1[2] == double.NaN)
            {
                ang1[2] = 0;
            }
            dp.Orientation_Yaw   = Math.Round(ang1[0], 0);
            dp.Orientation_Pitch = Math.Round(ang1[1], 0);
            dp.Orientation_Roll  = Math.Round(ang1[2], 0);

            dp.Name             = r["name"].ToString();
            dp.AppearsInRadar   = (Boolean)r["appears_in_radar"];
            dp.RadarRange       = float.Parse(r["radar_range"].ToString());
            dp.Destination      = int.Parse(r["gate_to"].ToString());
            dp.SoundEffect      = int.Parse(r["sound_effect_id"].ToString());
            dp.SoundEffectRange = float.Parse(r["sound_effect_range"].ToString());

            //Stargate Specific Props
            dp.IsClassSpecific = (Boolean)r["classSpecific"];

            //TODO: Get Faction Name from ID;
            String factionName = mainFrm.factions.findNameByID(int.Parse(r["faction_id"].ToString()));

            dp.FactionID = factionName;
        }
        public void updateChangedInfo(String propertyName, Object _changedValue)
        {
            String changedValue = _changedValue.ToString();

            //Update DataRow and Graphics (only certain props require graphical updating).
            if (propertyName == "SectorID")
            {
                dr["sector_id"] = int.Parse(changedValue);
            }
            else if (propertyName == "NavType")
            {
                dr["nav_type"] = changedValue;
            }
            else if (propertyName == "Signature")
            {
                dr["signature"] = float.Parse(changedValue);

                float imageWidth  = stargateImage.Width;
                float imageHeight = stargateImage.Height;
                float x           = stargateImage.X;
                float y           = stargateImage.Y;
                stargateImage.GetChild(0).X      = (x + (imageWidth / 2)) - (float.Parse(changedValue) / 100);
                stargateImage.GetChild(0).Y      = (y + (imageHeight / 2)) - (float.Parse(changedValue) / 100);
                stargateImage.GetChild(0).Width  = (float.Parse(changedValue) * 2) / 100;
                stargateImage.GetChild(0).Height = (float.Parse(changedValue) * 2) / 100;
            }
            else if (propertyName == "IsHuge")
            {
                dr["is_huge"] = bool.Parse(changedValue);
            }
            else if (propertyName == "BaseXP")
            {
                dr["base_xp"] = int.Parse(changedValue);
            }
            else if (propertyName == "ExplorationRange")
            {
                dr["exploration_range"] = float.Parse(changedValue);

                float imageWidth  = stargateImage.Width;
                float imageHeight = stargateImage.Height;
                float x           = stargateImage.X;
                float y           = stargateImage.Y;
                stargateImage.GetChild(2).X      = (x + (imageWidth / 2)) - (float.Parse(changedValue) / 100);
                stargateImage.GetChild(2).Y      = (y + (imageHeight / 2)) - (float.Parse(changedValue) / 100);
                stargateImage.GetChild(2).Width  = (float.Parse(changedValue) * 2) / 100;
                stargateImage.GetChild(2).Height = (float.Parse(changedValue) * 2) / 100;
            }
            else if (propertyName == "BaseAssetID")
            {
                dr["base_asset_id"] = int.Parse(changedValue);
                foreach (DataGridViewRow row in _dgv.SelectedRows)
                {
                    _dgv.Rows[row.Index].Cells["base_asset_id"].Value = int.Parse(changedValue);
                    _dgv.Update();
                    _dgv.Refresh();
                }
            }
            else if (propertyName == "Color")
            {
                Color           color = (Color)_changedValue;
                AdobeColors.HSL hsv   = AdobeColors.RGB_to_HSL(color);

                dr["h"] = hsv.H;
                dr["s"] = hsv.S;
                dr["v"] = hsv.L;
            }
            else if (propertyName == "Type")
            {
                _layer.RemoveChild(stargateImage);

                /*
                 * if (changedValue == "Mobs")
                 * {
                 *  dr["type"] = 0;
                 *  new MobSprite(_layer, dr, _pg);
                 * }
                 * else if (changedValue == "Planets")
                 * {
                 *  dr["type"] = 3;
                 *  new PlanetSprite(_layer, dr, _pg);
                 * }
                 * else if (changedValue == "Starbases")
                 * {
                 *  dr["type"] = 12;
                 *  new StarbaseSprite(_layer, dr, _pg);
                 * }
                 * else if (changedValue == "Decorations")
                 * {
                 *  dr["type"] = 37;
                 *  new DecorationSprite(_layer, dr, _pg);
                 * }
                 * else if (changedValue == "Harvestables")
                 * {
                 *  dr["type"] = 38;
                 *  new HarvestableSprite(_layer, dr, _pg);
                 * }*/

                _pg.SelectedObject = null;
            }
            else if (propertyName == "Scale")
            {
                dr["scale"] = float.Parse(changedValue);
            }
            else if (propertyName == "PositionX")
            {
                dr["position_x"] = float.Parse(changedValue);

                float dx = (float.Parse(changedValue) / 100) - stargateImage.X;
                stargateImage.TranslateBy(dx, 0);
            }
            else if (propertyName == "PositionY")
            {
                dr["position_y"] = float.Parse(changedValue);

                float dy = (float.Parse(changedValue) / 100) - stargateImage.Y;
                stargateImage.TranslateBy(0, dy);
            }
            else if (propertyName == "PositionZ")
            {
                dr["position_z"] = float.Parse(changedValue);
            }
            else if (propertyName == "Orientation_Yaw" || propertyName == "Orientation_Pitch" || propertyName == "Orientation_Roll")
            {
                QuaternionCalc qtmp = new QuaternionCalc();
                double[]       q1   = qtmp.AngleToQuat(dp.Orientation_Yaw, dp.Orientation_Pitch, dp.Orientation_Roll);

                dr["orientation_z"] = q1[0];
                dr["orientation_u"] = q1[1];
                dr["orientation_v"] = q1[2];
                dr["orientation_w"] = q1[3];
            }
            else if (propertyName == "Name")
            {
                dr["name"] = changedValue;

                float x    = stargateImage.X;
                float y    = stargateImage.Y;
                PText name = (PText)stargateImage.GetChild(3);
                name.Text          = changedValue;
                name.TextAlignment = StringAlignment.Center;
                name.X             = x - (name.Width / 2);
                name.Y             = y - 20;

                foreach (DataGridViewRow row in _dgv.SelectedRows)
                {
                    _dgv.Rows[row.Index].Cells["name"].Value = changedValue;
                    _dgv.Update();
                    _dgv.Refresh();
                }
            }
            else if (propertyName == "AppearsInRadar")
            {
                dr["appears_in_radar"] = bool.Parse(changedValue);

                if (bool.Parse(changedValue) == true)
                {
                    changeImage(1);
                }
                else
                {
                    changeImage(0);
                }
            }
            else if (propertyName == "RadarRange")
            {
                dr["radar_range"] = float.Parse(changedValue);

                float imageWidth  = stargateImage.Width;
                float imageHeight = stargateImage.Height;
                float x           = stargateImage.X;
                float y           = stargateImage.Y;
                stargateImage.GetChild(1).X      = (x + (imageWidth / 2)) - (float.Parse(changedValue) / 100);
                stargateImage.GetChild(1).Y      = (y + (imageHeight / 2)) - (float.Parse(changedValue) / 100);
                stargateImage.GetChild(1).Width  = (float.Parse(changedValue) * 2) / 100;
                stargateImage.GetChild(1).Height = (float.Parse(changedValue) * 2) / 100;
            }
            else if (propertyName == "Destination")
            {
                dr["gate_to"] = int.Parse(changedValue);
            }
            else if (propertyName == "IsClassSpecific")
            {
                dr["classSpecific"] = bool.Parse(changedValue);

                if (bool.Parse(changedValue) == true)
                {
                    changeImage(2);
                }
                else
                {
                    if (bool.Parse(dr["appears_in_radar"].ToString()) == true)
                    {
                        changeImage(1);
                    }
                    else
                    {
                        changeImage(0);
                    }

                    if (int.Parse(dr["faction_id"].ToString()) > 0)
                    {
                        changeImage(3);
                    }
                }
            }
            else if (propertyName == "FactionID")
            {
                //get id from name;
                int id = mainFrm.factions.findIDbyName(changedValue);

                dr["faction_id"] = id;

                if (id > 0)
                {
                    Console.Out.WriteLine("test2");
                    changeImage(3);
                }
                else
                {
                    if (bool.Parse(dr["appears_in_radar"].ToString()) == true)
                    {
                        changeImage(1);
                    }
                    else
                    {
                        changeImage(0);
                    }

                    if (bool.Parse(dr["classSpecific"].ToString()) == true)
                    {
                        changeImage(2);
                    }
                }
            }
            else if (propertyName == "SoundEffect")
            {
                dr["sound_effect_id"] = int.Parse(changedValue);
            }
            else if (propertyName == "SoundEffectRange")
            {
                dr["sound_effect_range"] = float.Parse(changedValue);
            }

            if (dr.RowState != DataRowState.Modified)
            {
                dr.SetModified();
            }
        }
Exemple #3
0
        private void setupData(DataRow r)
        {
            int    objectType = int.Parse(r["type"].ToString());
            String oType      = "";

            switch (objectType)
            {
            case 0:
                oType = "Mobs";
                break;

            case 3:
                oType = "Planets";
                break;

            case 11:
                oType = "Stargates";
                break;

            case 12:
                oType = "Starbases";
                break;

            case 37:
                oType = "Decorations";
                break;

            case 38:
                oType = "Harvestables";
                break;
            }

            dp                  = new MobProps();
            dp.SectorID         = int.Parse(r["sector_id"].ToString());
            dp.NavType          = r["nav_type"].ToString();
            dp.Signature        = float.Parse(r["signature"].ToString());
            dp.IsHuge           = (Boolean)r["is_huge"];
            dp.BaseXP           = int.Parse(r["base_xp"].ToString());
            dp.ExplorationRange = float.Parse(r["exploration_range"].ToString());

            dp.BaseAssetID = int.Parse(r["base_asset_id"].ToString());

            AdobeColors.HSL hslColor = new AdobeColors.HSL();
            hslColor.H = float.Parse(r["h"].ToString());
            hslColor.S = float.Parse(r["s"].ToString());
            hslColor.L = float.Parse(r["v"].ToString());
            Color newColor = AdobeColors.HSL_to_RGB(hslColor);

            dp.Color = newColor;

            dp.Type      = oType;
            dp.Scale     = float.Parse(r["scale"].ToString());;
            dp.PositionX = float.Parse(r["position_x"].ToString());
            dp.PositionY = float.Parse(r["position_y"].ToString());
            dp.PositionZ = float.Parse(r["position_z"].ToString());;

            double[] quat1 = new double[4];
            quat1[0] = double.Parse(r["orientation_z"].ToString());
            quat1[1] = double.Parse(r["orientation_u"].ToString());
            quat1[2] = double.Parse(r["orientation_v"].ToString());
            quat1[3] = double.Parse(r["orientation_w"].ToString());

            QuaternionCalc qc1 = new QuaternionCalc();

            double[] ang1 = qc1.QuatToAngle(quat1);
            if (ang1[0] == double.NaN)
            {
                ang1[0] = 0;
            }
            if (ang1[1] == double.NaN)
            {
                ang1[1] = 0;
            }
            if (ang1[2] == double.NaN)
            {
                ang1[2] = 0;
            }
            dp.Orientation_Yaw   = Math.Round(ang1[0], 0);
            dp.Orientation_Pitch = Math.Round(ang1[1], 0);
            dp.Orientation_Roll  = Math.Round(ang1[2], 0);

            dp.Name             = r["name"].ToString();
            dp.AppearsInRadar   = (Boolean)r["appears_in_radar"];
            dp.RadarRange       = float.Parse(r["radar_range"].ToString());
            dp.Destination      = int.Parse(r["gate_to"].ToString());
            dp.SoundEffect      = int.Parse(r["sound_effect_id"].ToString());
            dp.SoundEffectRange = float.Parse(r["sound_effect_range"].ToString());

            dp.SpawnGroup   = "<Collection...>";
            dp.Count        = int.Parse(r["mob_count"].ToString());
            dp.SpawnRadius  = float.Parse(r["mob_spawn_radius"].ToString());
            dp.RespawnTime  = float.Parse(r["respawn_time"].ToString());
            dp.DelayedSpawn = (Boolean)r["delayed_spawn"];
        }
        private void setupData(DataRow r)
        {
            int    objectType = int.Parse(r["type"].ToString());
            String oType      = "";

            switch (objectType)
            {
            case 0:
                oType = "Mobs";
                break;

            case 3:
                oType = "Planets";
                break;

            case 11:
                oType = "Stargates";
                break;

            case 12:
                oType = "Starbases";
                break;

            case 37:
                oType = "Decorations";
                break;

            case 38:
                oType = "Harvestables";
                break;
            }

            dp = new PlanetProps();

            //Base Props
            dp.SectorID         = int.Parse(r["sector_id"].ToString());
            dp.NavType          = r["nav_type"].ToString();
            dp.Signature        = float.Parse(r["signature"].ToString());
            dp.IsHuge           = (Boolean)r["is_huge"];
            dp.BaseXP           = int.Parse(r["base_xp"].ToString());
            dp.ExplorationRange = float.Parse(r["exploration_range"].ToString());

            dp.BaseAssetID = int.Parse(r["base_asset_id"].ToString());

            AdobeColors.HSL hslColor = new AdobeColors.HSL();
            hslColor.H = float.Parse(r["h"].ToString());
            hslColor.S = float.Parse(r["s"].ToString());
            hslColor.L = float.Parse(r["v"].ToString());
            Color newColor = AdobeColors.HSL_to_RGB(hslColor);

            dp.Color = newColor;

            dp.Type      = oType;
            dp.Scale     = float.Parse(r["scale"].ToString());;
            dp.PositionX = float.Parse(r["position_x"].ToString());
            dp.PositionY = float.Parse(r["position_y"].ToString());
            dp.PositionZ = float.Parse(r["position_z"].ToString());;

            double[] quat1 = new double[4];
            quat1[0] = double.Parse(r["orientation_z"].ToString());
            quat1[1] = double.Parse(r["orientation_u"].ToString());
            quat1[2] = double.Parse(r["orientation_v"].ToString());
            quat1[3] = double.Parse(r["orientation_w"].ToString());

            QuaternionCalc qc1 = new QuaternionCalc();

            double[] ang1 = qc1.QuatToAngle(quat1);
            if (ang1[0] == double.NaN)
            {
                ang1[0] = 0;
            }
            if (ang1[1] == double.NaN)
            {
                ang1[1] = 0;
            }
            if (ang1[2] == double.NaN)
            {
                ang1[2] = 0;
            }
            dp.Orientation_Yaw   = Math.Round(ang1[0], 0);
            dp.Orientation_Pitch = Math.Round(ang1[1], 0);
            dp.Orientation_Roll  = Math.Round(ang1[2], 0);

            dp.Name             = r["name"].ToString();
            dp.AppearsInRadar   = (Boolean)r["appears_in_radar"];
            dp.RadarRange       = float.Parse(r["radar_range"].ToString());
            dp.Destination      = int.Parse(r["gate_to"].ToString());
            dp.SoundEffect      = int.Parse(r["sound_effect_id"].ToString());
            dp.SoundEffectRange = float.Parse(r["sound_effect_range"].ToString());

            try
            {
                //Planet Props
                dp.OrbitID     = int.Parse(r["orbit_id"].ToString());
                dp.OrbitDist   = float.Parse(r["orbit_dist"].ToString());
                dp.OrbitAngle  = float.Parse(r["orbit_angle"].ToString());
                dp.OrbitRate   = float.Parse(r["orbit_rate"].ToString());
                dp.RotateAngle = float.Parse(r["rotate_angle"].ToString());
                dp.RotateRate  = float.Parse(r["rotate_rate"].ToString());
                dp.TiltAngle   = float.Parse(r["tilt_angle"].ToString());
                dp.IsLandable  = bool.Parse(r["is_landable"].ToString());
            }
            catch (Exception)
            {
                dp.OrbitID     = 0;
                dp.OrbitDist   = 0;
                dp.OrbitAngle  = 0;
                dp.OrbitRate   = 0;
                dp.RotateAngle = 0;
                dp.RotateRate  = 0;
                dp.TiltAngle   = 0;
                dp.IsLandable  = false;
            }
        }
        public void updateChangedInfo(String propertyName, Object _changedValue)
        {
            String changedValue = _changedValue.ToString();

            //Update DataRow and Graphics (only certain props require graphical updating).
            if (propertyName == "SectorID")
            {
                dr["sector_id"] = int.Parse(changedValue);
            }
            else if (propertyName == "NavType")
            {
                dr["nav_type"] = changedValue;
            }
            else if (propertyName == "Signature")
            {
                dr["signature"] = float.Parse(changedValue);

                float imageWidth  = harvestableImage.Width;
                float imageHeight = harvestableImage.Height;
                float x           = harvestableImage.X;
                float y           = harvestableImage.Y;
                harvestableImage.GetChild(0).X      = (x + (imageWidth / 2)) - (float.Parse(changedValue) / 100);
                harvestableImage.GetChild(0).Y      = (y + (imageHeight / 2)) - (float.Parse(changedValue) / 100);
                harvestableImage.GetChild(0).Width  = (float.Parse(changedValue) * 2) / 100;
                harvestableImage.GetChild(0).Height = (float.Parse(changedValue) * 2) / 100;
            }
            else if (propertyName == "IsHuge")
            {
                dr["is_huge"] = bool.Parse(changedValue);
            }
            else if (propertyName == "BaseXP")
            {
                dr["base_xp"] = int.Parse(changedValue);
            }
            else if (propertyName == "ExplorationRange")
            {
                dr["exploration_range"] = float.Parse(changedValue);

                float imageWidth  = harvestableImage.Width;
                float imageHeight = harvestableImage.Height;
                float x           = harvestableImage.X;
                float y           = harvestableImage.Y;
                harvestableImage.GetChild(2).X      = (x + (imageWidth / 2)) - (float.Parse(changedValue) / 100);
                harvestableImage.GetChild(2).Y      = (y + (imageHeight / 2)) - (float.Parse(changedValue) / 100);
                harvestableImage.GetChild(2).Width  = (float.Parse(changedValue) * 2) / 100;
                harvestableImage.GetChild(2).Height = (float.Parse(changedValue) * 2) / 100;
            }
            else if (propertyName == "BaseAssetID")
            {
                dr["base_asset_id"] = int.Parse(changedValue);
                foreach (DataGridViewRow row in _dgv.SelectedRows)
                {
                    _dgv.Rows[row.Index].Cells["base_asset_id"].Value = int.Parse(changedValue);
                    _dgv.Update();
                    _dgv.Refresh();
                }
            }
            else if (propertyName == "Color")
            {
                Color           color = (Color)_changedValue;
                AdobeColors.HSL hsv   = AdobeColors.RGB_to_HSL(color);

                dr["h"] = hsv.H;
                dr["s"] = hsv.S;
                dr["v"] = hsv.L;
            }
            else if (propertyName == "Type")
            {
                _layer.RemoveChild(harvestableImage);

                /*
                 * if (changedValue == "Mobs")
                 * {
                 *  dr["type"] = 0;
                 *  new MobSprite(_layer, dr, _pg);
                 * }
                 * else if (changedValue == "Planets")
                 * {
                 *  dr["type"] = 3;
                 *  new PlanetSprite(_layer, dr, _pg);
                 * }
                 * else if (changedValue == "Stargates")
                 * {
                 *  dr["type"] = 11;
                 *  new StargateSprite(_layer, dr, _pg);
                 * }
                 * else if (changedValue == "Starbases")
                 * {
                 *  dr["type"] = 12;
                 *  new StarbaseSprite(_layer, dr, _pg);
                 * }
                 * else if (changedValue == "Decorations")
                 * {
                 *  dr["type"] = 37;
                 *  new DecorationSprite(_layer, dr, _pg);
                 * }*/

                _pg.SelectedObject = null;
            }
            else if (propertyName == "Scale")
            {
                dr["scale"] = float.Parse(changedValue);
            }
            else if (propertyName == "PositionX")
            {
                dr["position_x"] = float.Parse(changedValue);

                float dx = (float.Parse(changedValue) / 100) - harvestableImage.X;
                harvestableImage.TranslateBy(dx, 0);
            }
            else if (propertyName == "PositionY")
            {
                dr["position_y"] = float.Parse(changedValue);

                float dy = (float.Parse(changedValue) / 100) - harvestableImage.Y;
                harvestableImage.TranslateBy(0, dy);
            }
            else if (propertyName == "PositionZ")
            {
                dr["position_z"] = float.Parse(changedValue);
            }
            else if (propertyName == "Orientation_Yaw" || propertyName == "Orientation_Pitch" || propertyName == "Orientation_Roll")
            {
                QuaternionCalc qtmp = new QuaternionCalc();
                double[]       q1   = qtmp.AngleToQuat(dp.Orientation_Yaw, dp.Orientation_Pitch, dp.Orientation_Roll);

                dr["orientation_z"] = q1[0];
                dr["orientation_u"] = q1[1];
                dr["orientation_v"] = q1[2];
                dr["orientation_w"] = q1[3];
            }
            else if (propertyName == "Name")
            {
                dr["name"] = changedValue;

                float x    = harvestableImage.X;
                float y    = harvestableImage.Y;
                PText name = (PText)harvestableImage.GetChild(3);
                name.Text          = changedValue;
                name.TextAlignment = StringAlignment.Center;
                name.X             = x - (name.Width / 2);
                name.Y             = y - 20;

                foreach (DataGridViewRow row in _dgv.SelectedRows)
                {
                    _dgv.Rows[row.Index].Cells["name"].Value = changedValue;
                    _dgv.Update();
                    _dgv.Refresh();
                }
            }
            else if (propertyName == "AppearsInRadar")
            {
                dr["appears_in_radar"] = bool.Parse(changedValue);

                if (bool.Parse(changedValue) == true)
                {
                    changeImage(1);
                }
                else
                {
                    changeImage(0);
                }
            }
            else if (propertyName == "RadarRange")
            {
                dr["radar_range"] = float.Parse(changedValue);

                float imageWidth  = harvestableImage.Width;
                float imageHeight = harvestableImage.Height;
                float x           = harvestableImage.X;
                float y           = harvestableImage.Y;
                harvestableImage.GetChild(1).X      = (x + (imageWidth / 2)) - (float.Parse(changedValue) / 100);
                harvestableImage.GetChild(1).Y      = (y + (imageHeight / 2)) - (float.Parse(changedValue) / 100);
                harvestableImage.GetChild(1).Width  = (float.Parse(changedValue) * 2) / 100;
                harvestableImage.GetChild(1).Height = (float.Parse(changedValue) * 2) / 100;
            }
            else if (propertyName == "Destination")
            {
                dr["gate_to"] = int.Parse(changedValue);
            }
            else if (propertyName == "Level")
            {
                dr["level"] = changedValue;
            }
            else if (propertyName == "Field")
            {
                if (changedValue == "Random")
                {
                    dr["field"] = 0;
                }
                else if (changedValue == "Ring")
                {
                    dr["field"] = 1;
                }
                else if (changedValue == "Donut")
                {
                    dr["field"] = 2;
                }
                else if (changedValue == "Cylinder")
                {
                    dr["field"] = 3;
                }
                else if (changedValue == "Sphere")
                {
                    dr["field"] = 4;
                }
                else if (changedValue == "Gas Cloud Clump")
                {
                    dr["field"] = 5;
                }
            }
            else if (propertyName == "ResCount")
            {
                dr["res_count"] = int.Parse(changedValue);
            }
            else if (propertyName == "MaxFieldRadius")
            {
                dr["max_field_radius"] = float.Parse(changedValue);

                int navType   = int.Parse(dr["nav_type"].ToString());
                int nodeCount = (3 + navType) + 2;

                float imageWidth  = harvestableImage.Width;
                float imageHeight = harvestableImage.Height;
                float x           = harvestableImage.X;
                float y           = harvestableImage.Y;
                harvestableImage.GetChild(nodeCount).X      = (x + (imageWidth / 2)) - (float.Parse(changedValue) / 100);
                harvestableImage.GetChild(nodeCount).Y      = (y + (imageHeight / 2)) - (float.Parse(changedValue) / 100);
                harvestableImage.GetChild(nodeCount).Width  = (float.Parse(changedValue) * 2) / 100;
                harvestableImage.GetChild(nodeCount).Height = (float.Parse(changedValue) * 2) / 100;
            }
            else if (propertyName == "MobSpawnRadius")
            {
                dr["spawn_radius"] = float.Parse(changedValue);

                int navType   = int.Parse(dr["nav_type"].ToString());
                int nodeCount = (3 + navType) + 1;

                float imageWidth  = harvestableImage.Width;
                float imageHeight = harvestableImage.Height;
                float x           = harvestableImage.X;
                float y           = harvestableImage.Y;
                harvestableImage.GetChild(nodeCount).X      = (x + (imageWidth / 2)) - (float.Parse(changedValue) / 100);
                harvestableImage.GetChild(nodeCount).Y      = (y + (imageHeight / 2)) - (float.Parse(changedValue) / 100);
                harvestableImage.GetChild(nodeCount).Width  = (float.Parse(changedValue) * 2) / 100;
                harvestableImage.GetChild(nodeCount).Height = (float.Parse(changedValue) * 2) / 100;
            }
            else if (propertyName == "PopRockChance")
            {
                dr["pop_rock_chance"] = float.Parse(changedValue);
            }
            else if (propertyName == "SoundEffect")
            {
                dr["sound_effect_id"] = int.Parse(changedValue);
            }
            else if (propertyName == "SoundEffectRange")
            {
                dr["sound_effect_range"] = float.Parse(changedValue);
            }

            if (dr.RowState != DataRowState.Modified)
            {
                dr.SetModified();
            }
        }
        private void setupData(DataRow r)
        {
            int    objectType = int.Parse(r["type"].ToString());
            String oType      = "";

            switch (objectType)
            {
            case 0:
                oType = "Mobs";
                break;

            case 3:
                oType = "Planets";
                break;

            case 11:
                oType = "Stargates";
                break;

            case 12:
                oType = "Starbases";
                break;

            case 37:
                oType = "Decorations";
                break;

            case 38:
                oType = "Harvestables";
                break;
            }

            dp = new HarvestableProps();

            //Base Props
            dp.SectorID         = int.Parse(r["sector_id"].ToString());
            dp.NavType          = r["nav_type"].ToString();
            dp.Signature        = float.Parse(r["signature"].ToString());
            dp.IsHuge           = (Boolean)r["is_huge"];
            dp.BaseXP           = int.Parse(r["base_xp"].ToString());
            dp.ExplorationRange = float.Parse(r["exploration_range"].ToString());

            dp.BaseAssetID = int.Parse(r["base_asset_id"].ToString());

            AdobeColors.HSL hslColor = new AdobeColors.HSL();
            hslColor.H = float.Parse(r["h"].ToString());
            hslColor.S = float.Parse(r["s"].ToString());
            hslColor.L = float.Parse(r["v"].ToString());
            Color newColor = AdobeColors.HSL_to_RGB(hslColor);

            dp.Color = newColor;

            dp.Type      = oType;
            dp.Scale     = float.Parse(r["scale"].ToString());;
            dp.PositionX = float.Parse(r["position_x"].ToString());
            dp.PositionY = float.Parse(r["position_y"].ToString());
            dp.PositionZ = float.Parse(r["position_z"].ToString());;

            double[] quat1 = new double[4];
            quat1[0] = double.Parse(r["orientation_z"].ToString());
            quat1[1] = double.Parse(r["orientation_u"].ToString());
            quat1[2] = double.Parse(r["orientation_v"].ToString());
            quat1[3] = double.Parse(r["orientation_w"].ToString());

            QuaternionCalc qc1 = new QuaternionCalc();

            double[] ang1 = qc1.QuatToAngle(quat1);
            if (ang1[0] == double.NaN)
            {
                ang1[0] = 0;
            }
            if (ang1[1] == double.NaN)
            {
                ang1[1] = 0;
            }
            if (ang1[2] == double.NaN)
            {
                ang1[2] = 0;
            }
            dp.Orientation_Yaw   = Math.Round(ang1[0], 0);
            dp.Orientation_Pitch = Math.Round(ang1[1], 0);
            dp.Orientation_Roll  = Math.Round(ang1[2], 0);

            dp.Name             = r["name"].ToString();
            dp.AppearsInRadar   = (Boolean)r["appears_in_radar"];
            dp.RadarRange       = float.Parse(r["radar_range"].ToString());
            dp.Destination      = int.Parse(r["gate_to"].ToString());
            dp.SoundEffect      = int.Parse(r["sound_effect_id"].ToString());
            dp.SoundEffectRange = float.Parse(r["sound_effect_range"].ToString());

            //Harvestable Props
            try
            {
                dp.Level          = r["level"].ToString();
                dp.ResType        = "<Collection...>";
                dp.ResCount       = int.Parse(r["res_count"].ToString());
                dp.MobSpawnRadius = float.Parse(r["spawn_radius"].ToString());
                dp.PopRockChance  = int.Parse(r["pop_rock_chance"].ToString());
                dp.SpawnGroup     = "<Collection...>";
                dp.MaxFieldRadius = float.Parse(r["max_field_radius"].ToString());

                String fieldName = "";
                switch (int.Parse(r["field"].ToString()))
                {
                case 0:
                    fieldName = "Random";
                    break;

                case 1:
                    fieldName = "Ring";
                    break;

                case 2:
                    fieldName = "Donut";
                    break;

                case 3:
                    fieldName = "Cylinder";
                    break;

                case 4:
                    fieldName = "Sphere";
                    break;

                case 5:
                    fieldName = "Gas Cloud Clump";
                    break;
                }

                dp.Field = fieldName;
            }
            catch (Exception)
            {
                dp.Level          = "1";
                dp.Field          = "Single";
                dp.ResCount       = 0;
                dp.MaxFieldRadius = 0;
                dp.MobSpawnRadius = 0;
                dp.PopRockChance  = 0;
                dp.SpawnGroup     = "<Collection...>";
            }
        }
Exemple #7
0
        private void button2_Click(object sender, EventArgs e)
        {
            if (lastInsertID == 0)
            {
                DataTable tmp = sectorObjectsSQL.getSectorObject();
                newSectorObjectsRow = tmp.NewRow();

                QuaternionCalc qtmp = new QuaternionCalc();
                double[]       q1   = null;

                switch (type2)
                {
                case 0:
                    newSectorObjectsRow["sector_id"]         = mp.SectorID;
                    newSectorObjectsRow["nav_type"]          = mp.NavType;
                    newSectorObjectsRow["signature"]         = mp.Signature;
                    newSectorObjectsRow["is_huge"]           = mp.IsHuge;
                    newSectorObjectsRow["base_xp"]           = mp.BaseXP;
                    newSectorObjectsRow["exploration_range"] = mp.ExplorationRange;
                    newSectorObjectsRow["base_asset_id"]     = mp.BaseAssetID;
                    newSectorObjectsRow["h"]          = mp.Color.GetHue();
                    newSectorObjectsRow["s"]          = mp.Color.GetSaturation();
                    newSectorObjectsRow["v"]          = mp.Color.GetBrightness();
                    newSectorObjectsRow["type"]       = 0;
                    newSectorObjectsRow["scale"]      = mp.Scale;
                    newSectorObjectsRow["position_x"] = mp.PositionX;
                    newSectorObjectsRow["position_y"] = mp.PositionY;
                    newSectorObjectsRow["position_z"] = mp.PositionZ;

                    q1 = qtmp.AngleToQuat(mp.Orientation_Yaw, mp.Orientation_Pitch, mp.Orientation_Roll);

                    newSectorObjectsRow["orientation_z"] = q1[0];
                    newSectorObjectsRow["orientation_u"] = q1[1];
                    newSectorObjectsRow["orientation_v"] = q1[2];
                    newSectorObjectsRow["orientation_w"] = q1[3];

                    newSectorObjectsRow["name"]               = mp.Name.Replace("'", "''");
                    newSectorObjectsRow["appears_in_radar"]   = mp.AppearsInRadar;
                    newSectorObjectsRow["radar_range"]        = mp.RadarRange;
                    newSectorObjectsRow["gate_to"]            = mp.Destination;
                    newSectorObjectsRow["sound_effect_id"]    = mp.SoundEffect;
                    newSectorObjectsRow["sound_effect_range"] = mp.SoundEffectRange;

                    newSectorObjectsRow["mob_spawn_radius"] = mp.SpawnRadius;
                    newSectorObjectsRow["mob_count"]        = mp.Count;

                    newSectorObjectsRow["respawn_time"]  = mp.RespawnTime;
                    newSectorObjectsRow["delayed_spawn"] = mp.DelayedSpawn;
                    break;

                case 3:
                    newSectorObjectsRow["sector_id"]         = pp.SectorID;
                    newSectorObjectsRow["nav_type"]          = pp.NavType;
                    newSectorObjectsRow["signature"]         = pp.Signature;
                    newSectorObjectsRow["is_huge"]           = pp.IsHuge;
                    newSectorObjectsRow["base_xp"]           = pp.BaseXP;
                    newSectorObjectsRow["exploration_range"] = pp.ExplorationRange;
                    newSectorObjectsRow["base_asset_id"]     = pp.BaseAssetID;
                    newSectorObjectsRow["h"]          = pp.Color.GetHue();
                    newSectorObjectsRow["s"]          = pp.Color.GetSaturation();
                    newSectorObjectsRow["v"]          = pp.Color.GetBrightness();
                    newSectorObjectsRow["type"]       = 3;
                    newSectorObjectsRow["scale"]      = pp.Scale;
                    newSectorObjectsRow["position_x"] = pp.PositionX;
                    newSectorObjectsRow["position_y"] = pp.PositionY;
                    newSectorObjectsRow["position_z"] = pp.PositionZ;

                    q1 = qtmp.AngleToQuat(pp.Orientation_Yaw, pp.Orientation_Pitch, pp.Orientation_Roll);

                    newSectorObjectsRow["orientation_z"] = q1[0];
                    newSectorObjectsRow["orientation_u"] = q1[1];
                    newSectorObjectsRow["orientation_v"] = q1[2];
                    newSectorObjectsRow["orientation_w"] = q1[3];

                    newSectorObjectsRow["name"]               = pp.Name.Replace("'", "''");
                    newSectorObjectsRow["appears_in_radar"]   = pp.AppearsInRadar;
                    newSectorObjectsRow["radar_range"]        = pp.RadarRange;
                    newSectorObjectsRow["gate_to"]            = pp.Destination;
                    newSectorObjectsRow["sound_effect_id"]    = pp.SoundEffect;
                    newSectorObjectsRow["sound_effect_range"] = pp.SoundEffectRange;

                    newSectorObjectsRow["orbit_id"]     = pp.OrbitID;
                    newSectorObjectsRow["orbit_dist"]   = pp.OrbitDist;
                    newSectorObjectsRow["orbit_angle"]  = pp.OrbitAngle;
                    newSectorObjectsRow["orbit_rate"]   = pp.OrbitRate;
                    newSectorObjectsRow["rotate_rate"]  = pp.RotateRate;
                    newSectorObjectsRow["rotate_angle"] = pp.RotateAngle;
                    newSectorObjectsRow["tilt_angle"]   = pp.TiltAngle;
                    newSectorObjectsRow["is_landable"]  = pp.IsLandable;
                    break;

                case 11:
                    newSectorObjectsRow["sector_id"]         = sgp.SectorID;
                    newSectorObjectsRow["nav_type"]          = sgp.NavType;
                    newSectorObjectsRow["signature"]         = sgp.Signature;
                    newSectorObjectsRow["is_huge"]           = sgp.IsHuge;
                    newSectorObjectsRow["base_xp"]           = sgp.BaseXP;
                    newSectorObjectsRow["exploration_range"] = sgp.ExplorationRange;
                    newSectorObjectsRow["base_asset_id"]     = sgp.BaseAssetID;
                    newSectorObjectsRow["h"]          = sgp.Color.GetHue();
                    newSectorObjectsRow["s"]          = sgp.Color.GetSaturation();
                    newSectorObjectsRow["v"]          = sgp.Color.GetBrightness();
                    newSectorObjectsRow["type"]       = 11;
                    newSectorObjectsRow["scale"]      = sgp.Scale;
                    newSectorObjectsRow["position_x"] = sgp.PositionX;
                    newSectorObjectsRow["position_y"] = sgp.PositionY;
                    newSectorObjectsRow["position_z"] = sgp.PositionZ;

                    q1 = qtmp.AngleToQuat(sgp.Orientation_Yaw, sgp.Orientation_Pitch, sgp.Orientation_Roll);

                    newSectorObjectsRow["orientation_z"] = q1[0];
                    newSectorObjectsRow["orientation_u"] = q1[1];
                    newSectorObjectsRow["orientation_v"] = q1[2];
                    newSectorObjectsRow["orientation_w"] = q1[3];

                    newSectorObjectsRow["name"]               = sgp.Name.Replace("'", "''");
                    newSectorObjectsRow["appears_in_radar"]   = sgp.AppearsInRadar;
                    newSectorObjectsRow["radar_range"]        = sgp.RadarRange;
                    newSectorObjectsRow["gate_to"]            = sgp.Destination;
                    newSectorObjectsRow["classSpecific"]      = sgp.IsClassSpecific;
                    newSectorObjectsRow["sound_effect_id"]    = sgp.SoundEffect;
                    newSectorObjectsRow["sound_effect_range"] = sgp.SoundEffectRange;

                    int factionID = mainFrm.factions.findIDbyName(sgp.FactionID);
                    newSectorObjectsRow["faction_id"] = factionID;
                    break;

                case 12:
                    newSectorObjectsRow["sector_id"]         = sbp.SectorID;
                    newSectorObjectsRow["nav_type"]          = sbp.NavType;
                    newSectorObjectsRow["signature"]         = sbp.Signature;
                    newSectorObjectsRow["is_huge"]           = sbp.IsHuge;
                    newSectorObjectsRow["base_xp"]           = sbp.BaseXP;
                    newSectorObjectsRow["exploration_range"] = sbp.ExplorationRange;
                    newSectorObjectsRow["base_asset_id"]     = sbp.BaseAssetID;
                    newSectorObjectsRow["h"]          = sbp.Color.GetHue();
                    newSectorObjectsRow["s"]          = sbp.Color.GetSaturation();
                    newSectorObjectsRow["v"]          = sbp.Color.GetBrightness();
                    newSectorObjectsRow["type"]       = 12;
                    newSectorObjectsRow["scale"]      = sbp.Scale;
                    newSectorObjectsRow["position_x"] = sbp.PositionX;
                    newSectorObjectsRow["position_y"] = sbp.PositionY;
                    newSectorObjectsRow["position_z"] = sbp.PositionZ;

                    q1 = qtmp.AngleToQuat(sbp.Orientation_Yaw, sbp.Orientation_Pitch, sbp.Orientation_Roll);

                    newSectorObjectsRow["orientation_z"] = q1[0];
                    newSectorObjectsRow["orientation_u"] = q1[1];
                    newSectorObjectsRow["orientation_v"] = q1[2];
                    newSectorObjectsRow["orientation_w"] = q1[3];

                    newSectorObjectsRow["name"]               = sbp.Name.Replace("'", "''");
                    newSectorObjectsRow["appears_in_radar"]   = sbp.AppearsInRadar;
                    newSectorObjectsRow["radar_range"]        = sbp.RadarRange;
                    newSectorObjectsRow["gate_to"]            = sbp.Destination;
                    newSectorObjectsRow["sound_effect_id"]    = sbp.SoundEffect;
                    newSectorObjectsRow["sound_effect_range"] = sbp.SoundEffectRange;

                    newSectorObjectsRow["capShip"]  = sbp.IsCapShip;
                    newSectorObjectsRow["dockable"] = sbp.IsDockable;
                    break;

                case 37:
                    newSectorObjectsRow["sector_id"]         = bp.SectorID;
                    newSectorObjectsRow["nav_type"]          = bp.NavType;
                    newSectorObjectsRow["signature"]         = bp.Signature;
                    newSectorObjectsRow["is_huge"]           = bp.IsHuge;
                    newSectorObjectsRow["base_xp"]           = bp.BaseXP;
                    newSectorObjectsRow["exploration_range"] = bp.ExplorationRange;
                    newSectorObjectsRow["base_asset_id"]     = bp.BaseAssetID;
                    newSectorObjectsRow["h"]          = bp.Color.GetHue();
                    newSectorObjectsRow["s"]          = bp.Color.GetSaturation();
                    newSectorObjectsRow["v"]          = bp.Color.GetBrightness();
                    newSectorObjectsRow["type"]       = 37;
                    newSectorObjectsRow["scale"]      = bp.Scale;
                    newSectorObjectsRow["position_x"] = bp.PositionX;
                    newSectorObjectsRow["position_y"] = bp.PositionY;
                    newSectorObjectsRow["position_z"] = bp.PositionZ;

                    q1 = qtmp.AngleToQuat(bp.Orientation_Yaw, bp.Orientation_Pitch, bp.Orientation_Roll);

                    newSectorObjectsRow["orientation_z"] = q1[0];
                    newSectorObjectsRow["orientation_u"] = q1[1];
                    newSectorObjectsRow["orientation_v"] = q1[2];
                    newSectorObjectsRow["orientation_w"] = q1[3];

                    newSectorObjectsRow["name"]               = bp.Name.Replace("'", "''");
                    newSectorObjectsRow["appears_in_radar"]   = bp.AppearsInRadar;
                    newSectorObjectsRow["radar_range"]        = bp.RadarRange;
                    newSectorObjectsRow["gate_to"]            = bp.Destination;
                    newSectorObjectsRow["sound_effect_id"]    = bp.SoundEffect;
                    newSectorObjectsRow["sound_effect_range"] = bp.SoundEffectRange;
                    break;

                case 38:
                    newSectorObjectsRow["sector_id"]         = hp.SectorID;
                    newSectorObjectsRow["nav_type"]          = hp.NavType;
                    newSectorObjectsRow["signature"]         = hp.Signature;
                    newSectorObjectsRow["is_huge"]           = hp.IsHuge;
                    newSectorObjectsRow["base_xp"]           = hp.BaseXP;
                    newSectorObjectsRow["exploration_range"] = hp.ExplorationRange;
                    newSectorObjectsRow["base_asset_id"]     = hp.BaseAssetID;
                    newSectorObjectsRow["h"]          = hp.Color.GetHue();
                    newSectorObjectsRow["s"]          = hp.Color.GetSaturation();
                    newSectorObjectsRow["v"]          = hp.Color.GetBrightness();
                    newSectorObjectsRow["type"]       = 38;
                    newSectorObjectsRow["scale"]      = hp.Scale;
                    newSectorObjectsRow["position_x"] = hp.PositionX;
                    newSectorObjectsRow["position_y"] = hp.PositionY;
                    newSectorObjectsRow["position_z"] = hp.PositionZ;

                    q1 = qtmp.AngleToQuat(hp.Orientation_Yaw, hp.Orientation_Pitch, hp.Orientation_Roll);

                    newSectorObjectsRow["orientation_z"] = q1[0];
                    newSectorObjectsRow["orientation_u"] = q1[1];
                    newSectorObjectsRow["orientation_v"] = q1[2];
                    newSectorObjectsRow["orientation_w"] = q1[3];

                    newSectorObjectsRow["name"]               = hp.Name.Replace("'", "''");
                    newSectorObjectsRow["appears_in_radar"]   = hp.AppearsInRadar;
                    newSectorObjectsRow["radar_range"]        = hp.RadarRange;
                    newSectorObjectsRow["gate_to"]            = hp.Destination;
                    newSectorObjectsRow["sound_effect_id"]    = hp.SoundEffect;
                    newSectorObjectsRow["sound_effect_range"] = hp.SoundEffectRange;

                    newSectorObjectsRow["level"]            = hp.Level;
                    newSectorObjectsRow["res_count"]        = hp.ResCount;
                    newSectorObjectsRow["spawn_radius"]     = hp.MobSpawnRadius;
                    newSectorObjectsRow["pop_rock_chance"]  = hp.PopRockChance;
                    newSectorObjectsRow["max_field_radius"] = hp.MaxFieldRadius;

                    if (hp.Field == "Random")
                    {
                        newSectorObjectsRow["field"] = 0;
                    }
                    else if (hp.Field == "Ring")
                    {
                        newSectorObjectsRow["field"] = 1;
                    }
                    else if (hp.Field == "Donut")
                    {
                        newSectorObjectsRow["field"] = 2;
                    }
                    else if (hp.Field == "Cylinder")
                    {
                        newSectorObjectsRow["field"] = 3;
                    }
                    else if (hp.Field == "Sphere")
                    {
                        newSectorObjectsRow["field"] = 4;
                    }
                    else if (hp.Field == "Gas Cloud Clump")
                    {
                        newSectorObjectsRow["field"] = 5;
                    }
                    break;
                }

                //Check if their is a sound_effect and set its default range if it has not been set.
                int id = int.Parse(newSectorObjectsRow["sound_effect_id"].ToString());
                Console.Out.WriteLine(id);
                float range = int.Parse(newSectorObjectsRow["sound_effect_range"].ToString());
                if (id != -1)
                {
                    if (range == 0)
                    {
                        newSectorObjectsRow["sound_effect_range"] = 30000;
                    }
                }

                //Add To dataTable
                tmp.Rows.Add(newSectorObjectsRow);;

                //Add to Database
                sectorObjectsSQL.newRow(newSectorObjectsRow);

                switch (type2)
                {
                case 0:
                    Boolean b1 = validateMobs(0);
                    if (b1 == true)
                    {
                        //Add to Graphic window
                        mainFrm.sectorWindow.addNewObject(type2, newSectorObjectsRow);
                        this.Close();
                    }
                    break;

                case 3:
                    mainFrm.sectorWindow.addNewObject(type2, newSectorObjectsRow);
                    this.Close();
                    break;

                case 11:
                    mainFrm.sectorWindow.addNewObject(type2, newSectorObjectsRow);
                    this.Close();
                    break;

                case 12:
                    mainFrm.sectorWindow.addNewObject(type2, newSectorObjectsRow);
                    this.Close();
                    break;

                case 37:
                    mainFrm.sectorWindow.addNewObject(type2, newSectorObjectsRow);
                    this.Close();
                    break;

                case 38:
                    Boolean b2 = validateHarvestables(0);
                    if (b2 == true)
                    {
                        //Add to Graphic window
                        mainFrm.sectorWindow.addNewObject(type2, newSectorObjectsRow);
                        this.Close();
                    }
                    break;
                }
            }
            else
            {
                if (type2 == 0)
                {
                    Boolean b1 = validateMobs(lastInsertID);
                    if (b1 == true)
                    {
                        //Add to Graphic window
                        mainFrm.sectorWindow.addNewObject(type2, newSectorObjectsRow);
                        this.Close();
                    }
                }
                else if (type2 == 38)
                {
                    Boolean b2 = validateHarvestables(lastInsertID);
                    if (b2 == true)
                    {
                        //Add to Graphic window
                        mainFrm.sectorWindow.addNewObject(type2, newSectorObjectsRow);
                        this.Close();
                    }
                }
            }
        }