Exemplo n.º 1
0
 void CloseWindow()
 {
     this.SetActive(false);
     CurrentState = States.NeedsEntity;
     _progradeDV  = 0;
     _radialDV    = 0;
     if (_orbitWidget != null)
     {
         _uiState.SelectedSysMapRender.UIWidgets.Remove(nameof(_orbitWidget));
         _orbitWidget = null;
     }
     if (_moveWidget != null)
     {
         _uiState.SelectedSysMapRender.UIWidgets.Remove(nameof(_moveWidget));
         _moveWidget = null;
     }
 }
Exemplo n.º 2
0
        void EntitySelected()
        {
            OrderingEntityState = _uiState.LastClickedEntity;

            if (OrderingEntityState.Entity.HasDataBlob <OrbitDB>())
            {
                _massCurrentBody = Entity.GetSOIParentEntity(OrderingEntityState.Entity).GetDataBlob <MassVolumeDB>().MassDry;
            }
            else
            {
                var foo = OrderingEntityState.Entity.GetDataBlob <NewtonMoveDB>();
                if (foo == null)
                {
                }
                else
                {
                    _massCurrentBody = foo.ParentMass;
                }
            }

            //else if(OrderingEntity.Entity.HasDataBlob<newton>())
            CurrentState = States.NeedsTarget;

            _massOrderingEntity      = OrderingEntityState.Entity.GetDataBlob <MassVolumeDB>().MassDry;
            _stdGravParamCurrentBody = GameConstants.Science.GravitationalConstant * (_massCurrentBody + _massOrderingEntity) / 3.347928976e33;
            if (_moveWidget == null)
            {
                _moveWidget = new WarpMoveOrderWidget(_uiState, OrderingEntityState.Entity);
                _uiState.SelectedSysMapRender.UIWidgets.Add(nameof(_moveWidget), _moveWidget);
            }
            DepartureCalcs();

            if (OrderingEntityState.Entity.HasDataBlob <NewtonThrustAbilityDB>())
            {
                var db = OrderingEntityState.Entity.GetDataBlob <NewtonThrustAbilityDB>();
                _newtonUI = new NewtonionOrderUI(db, _massOrderingEntity);
            }

            //debug code:
            //var sgpCur = _orderEntityOrbit.GravitationalParameterAU;
            //var ralitiveVel1 = OrbitProcessor.InstantaneousOrbitalVelocityVector_AU(_orderEntityOrbit, _departureDateTime);
            //var ralPosCBAU = OrderingEntityState.Entity.GetDataBlob<PositionDB>().RelativePosition_AU;
            //var smaCurrOrbtAU = _orderEntityOrbit.SemiMajorAxisAU;
            //var ralitiveVel2 = OrbitMath.PreciseOrbitalVelocityVector(_stdGravParamCurrentBody, ralPosCBAU, smaCurrOrbtAU, _orderEntityOrbit.Eccentricity, _orderEntityOrbit.LongitudeOfAscendingNode + _orderEntityOrbit.ArgumentOfPeriapsis);
        }
Exemplo n.º 3
0
 void CloseWindow()
 {
     IsActive     = false;
     CurrentState = States.NeedsEntity;
     _state.SelectedSystem.ManagerSubpulses.SystemDateChangedEvent -= OnSystemDateTimeChange;
     _progradeDV = 0;
     _radialDV   = 0;
     if (_orbitWidget != null)
     {
         _state.SelectedSysMapRender.UIWidgets.Remove(nameof(_orbitWidget));
         _orbitWidget = null;
     }
     if (_moveWidget != null)
     {
         _state.SelectedSysMapRender.UIWidgets.Remove(nameof(_moveWidget));
         _moveWidget = null;
     }
 }
Exemplo n.º 4
0
        private WarpOrderWindow(EntityState entityState, bool smMode = false)
        {
            _flags = ImGuiWindowFlags.AlwaysAutoResize;

            OrderingEntityState = entityState;
            _smMode             = smMode;

            _displayText = "Warp Order: " + OrderingEntityState.Name;
            _tooltipText = "Select target to orbit";
            CurrentState = States.NeedsTarget;
            //TargetEntity = new EntityState(Entity.InvalidEntity) { Name = "" };
            if (OrderingEntityState.Entity.HasDataBlob <OrbitDB>())
            {
                //_orbitWidget = new OrbitOrderWiget(OrderingEntity.Entity.GetDataBlob<OrbitDB>());
                //_uiState.MapRendering.UIWidgets.Add(_orbitWidget);
                if (_moveWidget == null)
                {
                    _moveWidget = new WarpMoveOrderWidget(_uiState, OrderingEntityState.Entity);
                    _uiState.SelectedSysMapRender.UIWidgets.Add(nameof(_moveWidget), _moveWidget);
                }
            }
            if (OrderingEntityState.Entity.HasDataBlob <NewtonThrustAbilityDB>())
            {
                var newtDB = OrderingEntityState.Entity.GetDataBlob <NewtonThrustAbilityDB>();
                _maxDV = (float)newtDB.DeltaV;
            }

            fsm = new Action[4, 4]
            {
                //selectEntity      selectPos               clickAction     altClick
                { DoNothing, DoNothing, DoNothing, AbortOrder, },                           //needsEntity
                { TargetSelected, DoNothing, DoNothing, GoBackState, },                     //needsTarget
                { DoNothing, InsertionPntSelected, DoNothing, GoBackState, },               //needsApopapsis
                //{DoNothing,         PeriapsisPntSelected,   DoNothing,      GoBackState, }, //needsPeriapsis
                { DoNothing, DoNothing, ActionCmd, GoBackState, }                           //needsActoning
            };
        }