예제 #1
0
 private bool IsPressed(modProgram.clsKeysActive KeysDown)
 {
     foreach (System.Windows.Forms.Keys keys in this.Keys)
     {
         if (!KeysDown.Keys[(int) keys])
         {
             return false;
         }
     }
     foreach (System.Windows.Forms.Keys keys2 in this.UnlessKeys)
     {
         if (KeysDown.Keys[(int) keys2])
         {
             return false;
         }
     }
     return true;
 }
예제 #2
0
        public bool SetDroidType(modProgram.enumDroidType DroidType)
        {
            switch (DroidType)
            {
                case modProgram.enumDroidType.Weapon:
                    this.TemplateDroidType = modProgram.TemplateDroidType_Droid;
                    break;

                case modProgram.enumDroidType.Sensor:
                    this.TemplateDroidType = modProgram.TemplateDroidType_Droid;
                    break;

                case modProgram.enumDroidType.ECM:
                    this.TemplateDroidType = modProgram.TemplateDroidType_Droid;
                    break;

                case modProgram.enumDroidType.Construct:
                    this.TemplateDroidType = modProgram.TemplateDroidType_Droid;
                    break;

                case modProgram.enumDroidType.Person:
                    this.TemplateDroidType = modProgram.TemplateDroidType_Person;
                    break;

                case modProgram.enumDroidType.Cyborg:
                    this.TemplateDroidType = modProgram.TemplateDroidType_Cyborg;
                    break;

                case modProgram.enumDroidType.Transporter:
                    this.TemplateDroidType = modProgram.TemplateDroidType_Transporter;
                    break;

                case modProgram.enumDroidType.Command:
                    this.TemplateDroidType = modProgram.TemplateDroidType_Droid;
                    break;

                case modProgram.enumDroidType.Repair:
                    this.TemplateDroidType = modProgram.TemplateDroidType_Droid;
                    break;

                case modProgram.enumDroidType.Default_:
                    this.TemplateDroidType = modProgram.TemplateDroidType_Null;
                    break;

                case modProgram.enumDroidType.Cyborg_Construct:
                    this.TemplateDroidType = modProgram.TemplateDroidType_CyborgConstruct;
                    break;

                case modProgram.enumDroidType.Cyborg_Repair:
                    this.TemplateDroidType = modProgram.TemplateDroidType_CyborgRepair;
                    break;

                case modProgram.enumDroidType.Cyborg_Super:
                    this.TemplateDroidType = modProgram.TemplateDroidType_CyborgSuper;
                    break;

                default:
                    this.TemplateDroidType = null;
                    return false;
            }
            return true;
        }
예제 #3
0
 public void Apply_Terrain_Fill(modProgram.enumFillCliffAction CliffAction, bool Inside)
 {
     clsMouseOver.clsOverTerrain mouseOverTerrain = this.GetMouseOverTerrain();
     if (mouseOverTerrain != null)
     {
         modMath.sXY_int normal = mouseOverTerrain.Vertex.Normal;
         clsPainter.clsTerrain selectedTerrain = modProgram.SelectedTerrain;
         clsPainter.clsTerrain terrain = this.Map.Terrain.Vertices[normal.X, normal.Y].Terrain;
         if (selectedTerrain != terrain)
         {
             modMath.sXY_int[] _intArray = new modMath.sXY_int[0x80001];
             _intArray[0] = normal;
             int index = 1;
             int num6 = 0;
             while (num6 < index)
             {
                 bool flag;
                 modMath.sXY_int vertexNum = _intArray[num6];
                 if (CliffAction == modProgram.enumFillCliffAction.StopBefore)
                 {
                     flag = this.Map.VertexIsCliffEdge(vertexNum);
                 }
                 else
                 {
                     flag = false;
                 }
                 bool flag2 = false;
                 if (Inside)
                 {
                     if (vertexNum.X > 0)
                     {
                         if ((vertexNum.Y > 0) && ((this.Map.Terrain.Vertices[vertexNum.X - 1, vertexNum.Y - 1].Terrain != terrain) & (this.Map.Terrain.Vertices[vertexNum.X - 1, vertexNum.Y - 1].Terrain != selectedTerrain)))
                         {
                             flag2 = true;
                         }
                         if ((this.Map.Terrain.Vertices[vertexNum.X - 1, vertexNum.Y].Terrain != terrain) & (this.Map.Terrain.Vertices[vertexNum.X - 1, vertexNum.Y].Terrain != selectedTerrain))
                         {
                             flag2 = true;
                         }
                         if ((vertexNum.Y < this.Map.Terrain.TileSize.Y) && ((this.Map.Terrain.Vertices[vertexNum.X - 1, vertexNum.Y + 1].Terrain != terrain) & (this.Map.Terrain.Vertices[vertexNum.X - 1, vertexNum.Y + 1].Terrain != selectedTerrain)))
                         {
                             flag2 = true;
                         }
                     }
                     if ((vertexNum.Y > 0) && ((this.Map.Terrain.Vertices[vertexNum.X, vertexNum.Y - 1].Terrain != terrain) & (this.Map.Terrain.Vertices[vertexNum.X, vertexNum.Y - 1].Terrain != selectedTerrain)))
                     {
                         flag2 = true;
                     }
                     if (vertexNum.X < this.Map.Terrain.TileSize.X)
                     {
                         if ((vertexNum.Y > 0) && ((this.Map.Terrain.Vertices[vertexNum.X + 1, vertexNum.Y - 1].Terrain != terrain) & (this.Map.Terrain.Vertices[vertexNum.X + 1, vertexNum.Y - 1].Terrain != selectedTerrain)))
                         {
                             flag2 = true;
                         }
                         if ((this.Map.Terrain.Vertices[vertexNum.X + 1, vertexNum.Y].Terrain != terrain) & (this.Map.Terrain.Vertices[vertexNum.X + 1, vertexNum.Y].Terrain != selectedTerrain))
                         {
                             flag2 = true;
                         }
                         if ((vertexNum.Y < this.Map.Terrain.TileSize.Y) && ((this.Map.Terrain.Vertices[vertexNum.X + 1, vertexNum.Y + 1].Terrain != terrain) & (this.Map.Terrain.Vertices[vertexNum.X + 1, vertexNum.Y + 1].Terrain != selectedTerrain)))
                         {
                             flag2 = true;
                         }
                     }
                     if ((vertexNum.Y < this.Map.Terrain.TileSize.Y) && ((this.Map.Terrain.Vertices[vertexNum.X, vertexNum.Y + 1].Terrain != terrain) & (this.Map.Terrain.Vertices[vertexNum.X, vertexNum.Y + 1].Terrain != selectedTerrain)))
                     {
                         flag2 = true;
                     }
                 }
                 if (!(flag | flag2) && (this.Map.Terrain.Vertices[vertexNum.X, vertexNum.Y].Terrain == terrain))
                 {
                     modMath.sXY_int _int2;
                     modMath.sXY_int _int4;
                     this.Map.Terrain.Vertices[vertexNum.X, vertexNum.Y].Terrain = selectedTerrain;
                     this.Map.SectorGraphicsChanges.VertexChanged(vertexNum);
                     this.Map.SectorTerrainUndoChanges.VertexChanged(vertexNum);
                     this.Map.AutoTextureChanges.VertexChanged(vertexNum);
                     _int2.X = vertexNum.X + 1;
                     _int2.Y = vertexNum.Y;
                     if ((((_int2.X >= 0) & (_int2.X <= this.Map.Terrain.TileSize.X)) & (_int2.Y >= 0)) & (_int2.Y <= this.Map.Terrain.TileSize.Y))
                     {
                         if (CliffAction == modProgram.enumFillCliffAction.StopAfter)
                         {
                             _int4 = new modMath.sXY_int(vertexNum.X, vertexNum.Y);
                             flag = this.Map.SideHIsCliffOnBothSides(_int4);
                         }
                         else
                         {
                             flag = false;
                         }
                         if (!flag && (this.Map.Terrain.Vertices[_int2.X, _int2.Y].Terrain == terrain))
                         {
                             if (_intArray.GetUpperBound(0) < index)
                             {
                                 _intArray = (modMath.sXY_int[]) Utils.CopyArray((Array) _intArray, new modMath.sXY_int[((index * 2) + 1) + 1]);
                             }
                             _intArray[index] = _int2;
                             index++;
                         }
                     }
                     _int2.X = vertexNum.X - 1;
                     _int2.Y = vertexNum.Y;
                     if ((((_int2.X >= 0) & (_int2.X <= this.Map.Terrain.TileSize.X)) & (_int2.Y >= 0)) & (_int2.Y <= this.Map.Terrain.TileSize.Y))
                     {
                         if (CliffAction == modProgram.enumFillCliffAction.StopAfter)
                         {
                             _int4 = new modMath.sXY_int(vertexNum.X - 1, vertexNum.Y);
                             flag = this.Map.SideHIsCliffOnBothSides(_int4);
                         }
                         else
                         {
                             flag = false;
                         }
                         if (!flag && (this.Map.Terrain.Vertices[_int2.X, _int2.Y].Terrain == terrain))
                         {
                             if (_intArray.GetUpperBound(0) < index)
                             {
                                 _intArray = (modMath.sXY_int[]) Utils.CopyArray((Array) _intArray, new modMath.sXY_int[((index * 2) + 1) + 1]);
                             }
                             _intArray[index] = _int2;
                             index++;
                         }
                     }
                     _int2.X = vertexNum.X;
                     _int2.Y = vertexNum.Y + 1;
                     if ((((_int2.X >= 0) & (_int2.X <= this.Map.Terrain.TileSize.X)) & (_int2.Y >= 0)) & (_int2.Y <= this.Map.Terrain.TileSize.Y))
                     {
                         if (CliffAction == modProgram.enumFillCliffAction.StopAfter)
                         {
                             _int4 = new modMath.sXY_int(vertexNum.X, vertexNum.Y);
                             flag = this.Map.SideVIsCliffOnBothSides(_int4);
                         }
                         else
                         {
                             flag = false;
                         }
                         if (!flag && (this.Map.Terrain.Vertices[_int2.X, _int2.Y].Terrain == terrain))
                         {
                             if (_intArray.GetUpperBound(0) < index)
                             {
                                 _intArray = (modMath.sXY_int[]) Utils.CopyArray((Array) _intArray, new modMath.sXY_int[((index * 2) + 1) + 1]);
                             }
                             _intArray[index] = _int2;
                             index++;
                         }
                     }
                     _int2.X = vertexNum.X;
                     _int2.Y = vertexNum.Y - 1;
                     if ((((_int2.X >= 0) & (_int2.X <= this.Map.Terrain.TileSize.X)) & (_int2.Y >= 0)) & (_int2.Y <= this.Map.Terrain.TileSize.Y))
                     {
                         if (CliffAction == modProgram.enumFillCliffAction.StopAfter)
                         {
                             _int4 = new modMath.sXY_int(vertexNum.X, vertexNum.Y - 1);
                             flag = this.Map.SideVIsCliffOnBothSides(_int4);
                         }
                         else
                         {
                             flag = false;
                         }
                         if (!flag && (this.Map.Terrain.Vertices[_int2.X, _int2.Y].Terrain == terrain))
                         {
                             if (_intArray.GetUpperBound(0) < index)
                             {
                                 _intArray = (modMath.sXY_int[]) Utils.CopyArray((Array) _intArray, new modMath.sXY_int[((index * 2) + 1) + 1]);
                             }
                             _intArray[index] = _int2;
                             index++;
                         }
                     }
                 }
                 num6++;
                 if (num6 >= 0x20000)
                 {
                     int num4 = index - num6;
                     int num2 = Math.Min(num6, num4);
                     int num3 = index - num2;
                     int num7 = num2 - 1;
                     for (int i = 0; i <= num7; i++)
                     {
                         _intArray[i] = _intArray[num3 + i];
                     }
                     index -= num6;
                     num6 = 0;
                     if ((index * 3) < (_intArray.GetUpperBound(0) + 1))
                     {
                         _intArray = (modMath.sXY_int[]) Utils.CopyArray((Array) _intArray, new modMath.sXY_int[((index * 2) + 1) + 1]);
                     }
                 }
             }
             this.Map.Update();
             this.Map.UndoStepCreate("Ground Fill");
             this.MapView.DrawViewLater();
         }
     }
 }
예제 #4
0
 public bool ScreenXY_Get_TerrainPos(modMath.sXY_int ScreenPos, ref modProgram.sWorldPos ResultPos)
 {
     try
     {
         Position.XYZ_dbl _dbl;
         Position.XY_dbl _dbl3;
         Position.XY_dbl _dbl4;
         modMath.sXY_int _int;
         modMath.sXY_int _int2;
         Position.XYZ_dbl _dbl5;
         Position.XYZ_dbl _dbl6;
         Position.XYZ_dbl _dbl8;
         _dbl5.X = this.ViewPos.X;
         _dbl5.Y = this.ViewPos.Y;
         _dbl5.Z = 0 - this.ViewPos.Z;
         _dbl8.X = (ScreenPos.X - (((double) this.MapView.GLSize.X) / 2.0)) * this.FOVMultiplier;
         _dbl8.Y = ((((double) this.MapView.GLSize.Y) / 2.0) - ScreenPos.Y) * this.FOVMultiplier;
         _dbl8.Z = 1.0;
         Matrix3DMath.VectorRotationByMatrix(this.ViewAngleMatrix, _dbl8, ref _dbl6);
         _dbl6.Y = -_dbl6.Y;
         _dbl6.Z = -_dbl6.Z;
         double num2 = (_dbl5.Y - (0xff * this.Map.HeightMultiplier)) / _dbl6.Y;
         _dbl3.X = _dbl5.X + (_dbl6.X * num2);
         _dbl3.Y = _dbl5.Z + (_dbl6.Z * num2);
         num2 = _dbl5.Y / _dbl6.Y;
         _dbl4.X = _dbl5.X + (_dbl6.X * num2);
         _dbl4.Y = _dbl5.Z + (_dbl6.Z * num2);
         _int2.X = Math.Max((int) Math.Round(Conversion.Int((double) (Math.Min(_dbl3.X, _dbl4.X) / 128.0))), 0);
         _int2.Y = Math.Max((int) Math.Round(Conversion.Int((double) (Math.Min(_dbl3.Y, _dbl4.Y) / 128.0))), 0);
         _int.X = Math.Min((int) Math.Round(Conversion.Int((double) (Math.Max(_dbl3.X, _dbl4.X) / 128.0))), this.Map.Terrain.TileSize.X - 1);
         _int.Y = Math.Min((int) Math.Round(Conversion.Int((double) (Math.Max(_dbl3.Y, _dbl4.Y) / 128.0))), this.Map.Terrain.TileSize.Y - 1);
         double maxValue = double.MaxValue;
         _dbl.X = double.NaN;
         _dbl.Y = double.NaN;
         _dbl.Z = double.NaN;
         int y = _int.Y;
         for (int i = _int2.Y; i <= y; i++)
         {
             int x = _int.X;
             for (int j = _int2.X; j <= x; j++)
             {
                 Position.XYZ_dbl _dbl2;
                 double magnitude;
                 double num4;
                 double num5;
                 Position.XY_dbl _dbl7;
                 double num6;
                 double num7;
                 double num8;
                 _dbl7.X = j * 0x80;
                 _dbl7.Y = i * 0x80;
                 if (this.Map.Terrain.Tiles[j, i].Tri)
                 {
                     num8 = this.Map.Terrain.Vertices[j, i].Height * this.Map.HeightMultiplier;
                     num6 = (this.Map.Terrain.Vertices[j + 1, i].Height * this.Map.HeightMultiplier) - num8;
                     num7 = (this.Map.Terrain.Vertices[j, i + 1].Height * this.Map.HeightMultiplier) - num8;
                     _dbl8.Y = (num8 + ((((num6 * (_dbl5.X - _dbl7.X)) + (num7 * (_dbl5.Z - _dbl7.Y))) + ((((num6 * _dbl6.X) + (num7 * _dbl6.Z)) * _dbl5.Y) / _dbl6.Y)) / 128.0)) / (1.0 + (((num6 * _dbl6.X) + (num7 * _dbl6.Z)) / (_dbl6.Y * 128.0)));
                     _dbl8.X = _dbl5.X + ((_dbl6.X * (_dbl5.Y - _dbl8.Y)) / _dbl6.Y);
                     _dbl8.Z = _dbl5.Z + ((_dbl6.Z * (_dbl5.Y - _dbl8.Y)) / _dbl6.Y);
                     num4 = (_dbl8.X / 128.0) - j;
                     num5 = (_dbl8.Z / 128.0) - i;
                     if (((((num5 <= (1.0 - num4)) & (num4 >= 0.0)) & (num5 >= 0.0)) & (num4 <= 1.0)) & (num5 <= 1.0))
                     {
                         _dbl2 = _dbl8 - _dbl5;
                         magnitude = _dbl2.GetMagnitude();
                         if (magnitude < maxValue)
                         {
                             maxValue = magnitude;
                             _dbl = _dbl8;
                         }
                     }
                     num8 = this.Map.Terrain.Vertices[j + 1, i + 1].Height * this.Map.HeightMultiplier;
                     num6 = (this.Map.Terrain.Vertices[j, i + 1].Height * this.Map.HeightMultiplier) - num8;
                     num7 = (this.Map.Terrain.Vertices[j + 1, i].Height * this.Map.HeightMultiplier) - num8;
                     _dbl8.Y = (((num8 + num6) + num7) + ((((num6 * (_dbl7.X - _dbl5.X)) + (num7 * (_dbl7.Y - _dbl5.Z))) - ((((num6 * _dbl6.X) + (num7 * _dbl6.Z)) * _dbl5.Y) / _dbl6.Y)) / 128.0)) / (1.0 - (((num6 * _dbl6.X) + (num7 * _dbl6.Z)) / (_dbl6.Y * 128.0)));
                     _dbl8.X = _dbl5.X + ((_dbl6.X * (_dbl5.Y - _dbl8.Y)) / _dbl6.Y);
                     _dbl8.Z = _dbl5.Z + ((_dbl6.Z * (_dbl5.Y - _dbl8.Y)) / _dbl6.Y);
                     num4 = (_dbl8.X / 128.0) - j;
                     num5 = (_dbl8.Z / 128.0) - i;
                     if (((((num5 >= (1.0 - num4)) & (num4 >= 0.0)) & (num5 >= 0.0)) & (num4 <= 1.0)) & (num5 <= 1.0))
                     {
                         _dbl2 = _dbl8 - _dbl5;
                         magnitude = _dbl2.GetMagnitude();
                         if (magnitude < maxValue)
                         {
                             maxValue = magnitude;
                             _dbl = _dbl8;
                         }
                     }
                 }
                 else
                 {
                     num8 = this.Map.Terrain.Vertices[j + 1, i].Height * this.Map.HeightMultiplier;
                     num6 = (this.Map.Terrain.Vertices[j, i].Height * this.Map.HeightMultiplier) - num8;
                     num7 = (this.Map.Terrain.Vertices[j + 1, i + 1].Height * this.Map.HeightMultiplier) - num8;
                     _dbl8.Y = ((num8 + num6) + ((((num6 * (_dbl7.X - _dbl5.X)) + (num7 * (_dbl5.Z - _dbl7.Y))) - ((((num6 * _dbl6.X) - (num7 * _dbl6.Z)) * _dbl5.Y) / _dbl6.Y)) / 128.0)) / (1.0 - (((num6 * _dbl6.X) - (num7 * _dbl6.Z)) / (_dbl6.Y * 128.0)));
                     _dbl8.X = _dbl5.X + ((_dbl6.X * (_dbl5.Y - _dbl8.Y)) / _dbl6.Y);
                     _dbl8.Z = _dbl5.Z + ((_dbl6.Z * (_dbl5.Y - _dbl8.Y)) / _dbl6.Y);
                     num4 = (_dbl8.X / 128.0) - j;
                     num5 = (_dbl8.Z / 128.0) - i;
                     if (((((num5 <= num4) & (num4 >= 0.0)) & (num5 >= 0.0)) & (num4 <= 1.0)) & (num5 <= 1.0))
                     {
                         _dbl2 = _dbl8 - _dbl5;
                         magnitude = _dbl2.GetMagnitude();
                         if (magnitude < maxValue)
                         {
                             maxValue = magnitude;
                             _dbl = _dbl8;
                         }
                     }
                     num8 = this.Map.Terrain.Vertices[j, i + 1].Height * this.Map.HeightMultiplier;
                     num6 = (this.Map.Terrain.Vertices[j + 1, i + 1].Height * this.Map.HeightMultiplier) - num8;
                     num7 = (this.Map.Terrain.Vertices[j, i].Height * this.Map.HeightMultiplier) - num8;
                     _dbl8.Y = ((num8 + num7) + ((((num6 * (_dbl5.X - _dbl7.X)) + (num7 * (_dbl7.Y - _dbl5.Z))) + ((((num6 * _dbl6.X) - (num7 * _dbl6.Z)) * _dbl5.Y) / _dbl6.Y)) / 128.0)) / (1.0 + (((num6 * _dbl6.X) - (num7 * _dbl6.Z)) / (_dbl6.Y * 128.0)));
                     _dbl8.X = _dbl5.X + ((_dbl6.X * (_dbl5.Y - _dbl8.Y)) / _dbl6.Y);
                     _dbl8.Z = _dbl5.Z + ((_dbl6.Z * (_dbl5.Y - _dbl8.Y)) / _dbl6.Y);
                     num4 = (_dbl8.X / 128.0) - j;
                     num5 = (_dbl8.Z / 128.0) - i;
                     if (((((num5 >= num4) & (num4 >= 0.0)) & (num5 >= 0.0)) & (num4 <= 1.0)) & (num5 <= 1.0))
                     {
                         magnitude = (_dbl8 - _dbl5).GetMagnitude();
                         if (magnitude < maxValue)
                         {
                             maxValue = magnitude;
                             _dbl = _dbl8;
                         }
                     }
                 }
             }
         }
         if (_dbl.X == double.NaN)
         {
             return false;
         }
         ResultPos.Horizontal.X = (int) Math.Round(_dbl.X);
         ResultPos.Altitude = (int) Math.Round(_dbl.Y);
         ResultPos.Horizontal.Y = (int) Math.Round(_dbl.Z);
     }
     catch (Exception exception1)
     {
         ProjectData.SetProjectError(exception1);
         ProjectData.ClearProjectError();
         return false;
     }
     return true;
 }
예제 #5
0
 public void KeysChanged(modProgram.clsKeysActive KeysDown)
 {
     this._Active = this.IsPressed(KeysDown);
 }
예제 #6
0
 public clsMap.clsUnit PlaceUnit(clsUnitType Type, modProgram.sWorldPos Pos, clsMap.clsUnitGroup UnitGroup, int Rotation)
 {
     modMath.sXY_int _int;
     modMath.sXY_int _int3;
     modMath.sXY_int _int4;
     clsMap.clsUnitAdd add = new clsMap.clsUnitAdd {
         Map = this.Map,
         StoreChange = true
     };
     clsMap.clsUnit unit = new clsMap.clsUnit();
     add.NewUnit = unit;
     unit.Type = Type;
     unit.UnitGroup = UnitGroup;
     _int.X = (int) Math.Round(((double) (((double) Pos.Horizontal.X) / 128.0)));
     _int.Y = (int) Math.Round(((double) (((double) Pos.Horizontal.Y) / 128.0)));
     modMath.sXY_int _int2 = Type.get_GetFootprintSelected(Rotation);
     unit.Pos = Pos;
     _int3.X = (int) Math.Round(((double) (((((double) unit.Pos.Horizontal.X) / 128.0) - (((double) _int2.X) / 2.0)) + 0.5)));
     _int3.Y = (int) Math.Round(((double) (((((double) unit.Pos.Horizontal.Y) / 128.0) - (((double) _int2.Y) / 2.0)) + 0.5)));
     _int4.X = (int) Math.Round(((double) (((((double) unit.Pos.Horizontal.X) / 128.0) + (((double) _int2.X) / 2.0)) - 0.5)));
     _int4.Y = (int) Math.Round(((double) (((((double) unit.Pos.Horizontal.Y) / 128.0) + (((double) _int2.Y) / 2.0)) - 0.5)));
     unit.Rotation = Rotation;
     add.Perform();
     int num3 = Math.Min(_int4.Y, this.Map.Terrain.TileSize.Y - 1);
     for (int i = Math.Max(_int3.Y, 0); i <= num3; i++)
     {
         int num4 = Math.Min(_int4.X, this.Map.Terrain.TileSize.X - 1);
         for (int j = Math.Max(_int3.X, 0); j <= num4; j++)
         {
             this.TileNodeBlock(j, i);
         }
     }
     this.TilePathMap.FindCalc();
     return unit;
 }
예제 #7
0
파일: modIO.cs 프로젝트: Zabanya/SharpFlame
 public static bool WZAngleFromINIText(string Text, ref modProgram.sWZAngle Result)
 {
     modProgram.sWZAngle angle;
     clsSplitCommaText text = new clsSplitCommaText(Text);
     if (text.PartCount != 3)
     {
         return false;
     }
     if (!InvariantParse_ushort(text.Parts[0], ref angle.Direction))
     {
         int num;
         int remaidner;
         if (!InvariantParse_int(text.Parts[0], ref num))
         {
             return false;
         }
         int mulitplaier = Math.DivRem(num, 0x10000, out remaidner);
         try
         {
             if (remaidner < 0)
             {
                 angle.Direction = (ushort) (remaidner + 0x10000);
             }
             else
             {
                 angle.Direction = (ushort) remaidner;
             }
         }
         catch (Exception exception1)
         {
             ProjectData.SetProjectError(exception1);
             Exception exception = exception1;
             ProjectData.ClearProjectError();
             return false;
         }
         return true;
     }
     if (!InvariantParse_ushort(text.Parts[1], ref angle.Pitch))
     {
         return false;
     }
     if (!InvariantParse_ushort(text.Parts[2], ref angle.Roll))
     {
         return false;
     }
     Result = angle;
     return true;
 }
예제 #8
0
파일: modIO.cs 프로젝트: Zabanya/SharpFlame
 public static bool WorldPosFromINIText(string Text, ref modProgram.clsWorldPos Result)
 {
     clsSplitCommaText text = new clsSplitCommaText(Text);
     if (text.PartCount != 3)
     {
         return false;
     }
     int[] numArray = new int[3];
     int index = 0;
     do
     {
         int num2;
         if (InvariantParse_int(text.Parts[index], ref num2))
         {
             numArray[index] = num2;
         }
         else
         {
             return false;
         }
         index++;
     }
     while (index <= 2);
     modMath.sXY_int newHorizontal = new modMath.sXY_int(numArray[0], numArray[1]);
     modProgram.sWorldPos newWorldPos = new modProgram.sWorldPos(newHorizontal, numArray[2]);
     Result = new modProgram.clsWorldPos(newWorldPos);
     return true;
 }
예제 #9
0
 public clsWorldPos(modProgram.sWorldPos NewWorldPos)
 {
     this.WorldPos = NewWorldPos;
 }