public override void Update(GameTime gameTime)
        {
            float   TargetAlpha = 0.2f;
            Faction f           = FactionManager.GetFaction(ParentShip.FactionNumber);

            if (f.Cells > 0 || f.Energy > 0 || f.Score > 0)
            {
                TargetAlpha = 1;
            }
            if (Alpha > TargetAlpha)
            {
                Alpha -= gameTime.ElapsedGameTime.Milliseconds * AlphaChange * 60 / 1000f;
                if (Alpha < TargetAlpha)
                {
                    Alpha = TargetAlpha;
                }
            }
            else
            {
                Alpha += gameTime.ElapsedGameTime.Milliseconds * AlphaChange * 60 / 1000f;
                if (Alpha > TargetAlpha)
                {
                    Alpha = TargetAlpha;
                }
            }

            base.Update(gameTime);
        }
        public override void Update(GameTime gameTime)
        {
            GlowAlpha -= gameTime.ElapsedGameTime.Milliseconds * 60 / 1000f * AlphaChange;
            if (GlowAlpha < 0)
            {
                GlowAlpha = 0;
            }

            if (FactionManager.GetFaction(ParentBox.ParentShip.FactionNumber).Energy > 0)
            {
                IconAlpha += gameTime.ElapsedGameTime.Milliseconds * 60 / 1000f * IconAlpha;
                if (IconAlpha > 1)
                {
                    IconAlpha = 1;
                }
                if (FactionManager.GetFaction(ParentBox.ParentShip.FactionNumber).Energy != OldEnergy)
                {
                    OldEnergy = FactionManager.GetFaction(ParentBox.ParentShip.FactionNumber).Energy;
                    GlowAlpha = 1;
                }
            }
            else
            {
                IconAlpha -= gameTime.ElapsedGameTime.Milliseconds * 60 / 1000f * IconAlpha;
                if (IconAlpha < 0.2f)
                {
                    IconAlpha = 0.2f;
                }
            }
            base.Update(gameTime);
        }
        public override void Update(GameTime gameTime)
        {
            GlowAlpha -= gameTime.ElapsedGameTime.Milliseconds * 60 / 1000f * AlphaChange;
            if (GlowAlpha < 0)
            {
                GlowAlpha = 0;
            }

            float TargetAlpha = FactionManager.GetFaction(ParentBox.ParentShip.FactionNumber).Cells > 0 ? 1 : 0.2f;

            if (IconAlpha < TargetAlpha)
            {
                IconAlpha += gameTime.ElapsedGameTime.Milliseconds * 60 / 1000f * AlphaChange;
                if (IconAlpha > TargetAlpha)
                {
                    IconAlpha = TargetAlpha;
                }
            }
            else
            {
                IconAlpha -= gameTime.ElapsedGameTime.Milliseconds * 60 / 1000f * AlphaChange;
                if (IconAlpha < TargetAlpha)
                {
                    IconAlpha = TargetAlpha;
                }
            }

            if (FactionManager.GetFaction(ParentBox.ParentShip.FactionNumber).Cells != OldCells)
            {
                OldCells  = FactionManager.GetFaction(ParentBox.ParentShip.FactionNumber).Cells;
                GlowAlpha = 1;
            }
            base.Update(gameTime);
        }
 public override void Draw()
 {
     CurrentGroup.DrawAll();
     if (CardPickingMode)
     {
         Render.DrawShadowedText("Position: " + FactionManager.GetFaction(ParentShip.FactionNumber).CardPickPosition.ToString(), new Vector2(100));
     }
 }
        public void SetForGameSelection()
        {
            Groups.Clear();
            TechTreeGroup group = new TechTreeGroup(FactionManager.GetFaction(ParentShip.FactionNumber).Cards);

            group.SetNode(Groups.AddLast(group), this);
            CurrentGroup    = group;
            CardPickingMode = false;
        }
 public override void Draw(Vector2 Position, Vector2 Size)
 {
     if (PayToRespawnAlpha > 0)
     {
         Render.DrawShadowedText(FactionEvent.FeedFont, RespawnString, Position - new Vector2(StringWidth / 2, 100),
                                 Vector2.Zero, Color.White * PayToRespawnAlpha, Color.Black * PayToRespawnAlpha);
     }
     FactionManager.GetFaction(ParentShip.FactionNumber).Draw(Position);
 }
        public TechTreeMenu(PlayerShip ParentShip)
            : base(ParentShip)
        {
            MyFaction = FactionManager.GetFaction(ParentShip.FactionNumber);

            Groups = new LinkedList <TechTreeGroup>();
            AddGroup(new TechTreeGroup(FactionCard.SortedTurretDeck[0]));
            AddGroup(new TechTreeGroup(FactionCard.SortedTurretDeck[1]));
            AddGroup(new TechTreeGroup(FactionCard.SortedTurretDeck[2]));
        }
        public override void Update(GameTime gameTime)
        {
            if (ParentFrame != null)
            {
                DistanceAlpha = (300 - Math.Abs(this.Position.Y() - ParentFrame.CameraPosition.Y)) / 300f *
                                (600 - Math.Abs(this.Position.X() - ParentFrame.CameraPosition.X)) / 600f;
            }

            if (Selected && FactionManager.GetFaction(ParentShip.FactionNumber).PickingCards)
            {
                SelectedAlpha += gameTime.ElapsedGameTime.Milliseconds * 60 / 1000f * AlphaChange;
                if (SelectedAlpha > 1)
                {
                    SelectedAlpha = 1;
                }
            }
            else
            {
                SelectedAlpha -= gameTime.ElapsedGameTime.Milliseconds * 60 / 1000f * AlphaChange;
                if (SelectedAlpha < 0)
                {
                    SelectedAlpha = 0;
                }
            }
            FlashAlpha -= gameTime.ElapsedGameTime.Milliseconds * 60 / 1000f * AlphaChange;
            ErrorAlpha -= gameTime.ElapsedGameTime.Milliseconds * 60 / 1000f * AlphaChange;

            if (Alpha > 0 && !FactionManager.GetFaction(ParentShip.FactionNumber).PickingCards&& MarkerCount > 0)
            {
                if (!ParentShip.CanPlaceTurret(MyCard.TurretSize))
                {
                    RingAlpha -= gameTime.ElapsedGameTime.Milliseconds * 60 / 1000f * AlphaChange;
                    if (RingAlpha < 0)
                    {
                        RingAlpha = 0;
                    }
                }
                else
                {
                    RingAlpha += gameTime.ElapsedGameTime.Milliseconds * 60 / 1000f * AlphaChange;
                    if (RingAlpha > 1)
                    {
                        RingAlpha = 1;
                    }
                }
            }

            base.Update(gameTime);
        }
        public override void Update(GameTime gameTime)
        {
            MoveSpeed = 1f;

            if (Counter > FactionManager.GetFaction(ParentBox.ParentShip.FactionNumber).MiningPlatformCounter / 2)
            {
                GlowAlpha -= gameTime.ElapsedGameTime.Milliseconds * 60 / 1000f * GlowAlphaChange;
                FullAlpha -= gameTime.ElapsedGameTime.Milliseconds * 60 / 1000f * AlphaChange;
                if (FullAlpha < 0)
                {
                    FullAlpha = 0;
                }
                if (GlowAlpha < 0)
                {
                    GlowAlpha = 0;
                }
            }
            else
            {
                if (GlowAlpha == 0)
                {
                    ExtraGlowAlpha = 2;
                }

                GlowAlpha += gameTime.ElapsedGameTime.Milliseconds * 60 / 10000f * GlowAlphaChange;
                FullAlpha += gameTime.ElapsedGameTime.Milliseconds * 60 / 1000f * AlphaChange;
                if (FullAlpha > 1)
                {
                    FullAlpha = 1;
                }

                float MaxGlowAlpha = FactionManager.CanBuildMiningPlatform(ParentBox.ParentShip.FactionNumber) ? 2 : 1;
                if (GlowAlpha > MaxGlowAlpha)
                {
                    GlowAlpha = MaxGlowAlpha;
                }
            }

            ExtraGlowAlpha -= gameTime.ElapsedGameTime.Milliseconds * 60 / 1000f * AlphaChange;
            if (ExtraGlowAlpha < 0)
            {
                ExtraGlowAlpha = 0;
            }

            base.Update(gameTime);
        }
        public override void Update2(GameTime gameTime)
        {
            if (Alpha > 0 && !FactionManager.GetFaction(ParentShip.FactionNumber).PickingCards&& MarkerCount > 0)
            {
                Vector2 PlacePosition = ParentShip.GetPlacePosition(MyCard.TurretSize / 2);
                ParticleManager.CreateParticle(new Vector3(PlacePosition.X, 0, PlacePosition.Y), Vector3.Zero, MyColor * Alpha * RingAlpha * 0.25f, MyCard.TurretSize * (10 + Rand.r.Next(5)), 1);
                ParticleManager.CreateRing(new Vector3(PlacePosition.X, 0, PlacePosition.Y), MyCard.TurretSize * UnitBuilding.BuildingRingSizeMult * Alpha * RingAlpha, ParentShip.GetTeam());

                for (int i = 0; i < MyCard.CircleGlows; i++)
                {
                    float   R = (float)(((float)i / MyCard.CircleGlows * 2 * Math.PI) + (Level.Time % 2 / 2f * Math.PI));
                    Vector3 P = new Vector3((float)Math.Cos(R) * MyCard.Radius * Alpha * RingAlpha + PlacePosition.X, 0, (float)Math.Sin(R) * MyCard.Radius * Alpha * RingAlpha + PlacePosition.Y);
                    ParticleManager.CreateParticle(P, Vector3.Zero, MyColor, 64 * Alpha * RingAlpha, 1);
                }
            }

            base.Update2(gameTime);
        }
Exemplo n.º 11
0
        public override void Update(GameTime gameTime)
        {
            int c = FactionManager.GetFaction(ParentShip.FactionNumber).MaxMiningPlatformCounter / 2;

            if (c != CurrentMaxCounter)
            {
                CurrentMaxCounter = c;

                AddItem(new HudMineralCounter());

                int Counter = 0;
                foreach (HudMineralCounter m in Children)
                {
                    Counter++;
                    m.SetCounter(Counter, (-Children.Count / 2f + Counter - 0.5f) * 80);
                }
            }

            base.Update(gameTime);
        }
        public override void Update(GameTime gameTime)
        {
            float TargetAlpha = FactionManager.GetFaction(ParentBox.ParentShip.FactionNumber).Cells > 0? 1 : 0.2f;

            if (Alpha < TargetAlpha)
            {
                Alpha += gameTime.ElapsedGameTime.Milliseconds * 60 / 1000f * AlphaChange;
                if (Alpha > TargetAlpha)
                {
                    Alpha = TargetAlpha;
                }
            }
            else
            {
                Alpha -= gameTime.ElapsedGameTime.Milliseconds * 60 / 1000f * AlphaChange;
                if (Alpha < TargetAlpha)
                {
                    Alpha = TargetAlpha;
                }
            }
            base.Update(gameTime);
        }
        public override void Interact(PlayerShip p)
        {
            if (miningPlatform == null && FactionManager.CanBuildMiningPlatform(p.FactionNumber))
            {
                Vector3 P3 = new Vector3(Position.X(), 0, Position.Y());
                for (int i = 0; i < 40; i++)
                {
                    LineParticleSystem.AddParticle(P3, P3 + Rand.V3() * 1000, TeamInfo.GetColor(p.GetTeam()));
                }

                MiningPlatform m = FactionManager.GetMiningPlatform(p.FactionNumber);
                ParentLevel.AddObject(m);
                m.Position.set(Position.get());
                setPlatform(m);

                SoundManager.Play3DSound("PlayerBuildMiningRing",
                                         new Vector3(m.Position.X(), Y, m.Position.Y()), 0.25f, 500, 1);

                if (p.PlacedStartingMineralRock)
                {
                    FactionManager.AddCells(p.FactionNumber, -FactionManager.GetMiningPlatformCost(p.FactionNumber));
                    FactionManager.SetBuildingPlatform(p.FactionNumber, m);
                }
                else
                {
                    FactionManager.GetFaction(p.FactionNumber).MiningPlatformCounter = 0;
                    m.HullToughness *= 2;
                    m.SetAsStarting();
                    p.PlacedStartingMineralRock = true;
                    p.StartingMineralRock       = this;
                }

                p.LastPlacedPlatform.AddFirst(m);
                PathFindingManager.AddMineralRock(m);
            }
            base.Interact(p);
        }
        public override void DrawAsForm(Vector2 Position, Vector2 Size)
        {
            Vector2 FormSize  = Size * Alpha * 1.5f;
            float   FormAlpha = Alpha * DistanceAlpha;

            Render.DrawSprite(WaveCard.UnitPicker, Position, Size * new Vector2((Rand.F() + 6) / 7 * 4, 2.5f), Rotation.get(), MyColor * FormAlpha * 2);

            Render.DrawSprite(WaveCard.UnitBox, Position, FormSize * 1.25f, Rotation.get(), MyColor * (FormAlpha * FormAlpha * 0.3f * (4 + Rand.F())));
            Render.DrawSprite(WaveCard.UnitPicker, Position, FormSize * new Vector2((Rand.F() + 6) / 7, 1), Rotation.get(), MyColor * (FormAlpha * FormAlpha * 0.3f * (4 + Rand.F())));
            Render.DrawSprite(MyTexture, Position, FormSize, Rotation.get(), Color.White * FormAlpha);


            if (FlashAlpha > 0)
            {
                Render.DrawSprite(HudItem.GlowTexture, Position, FormSize * 2, Rotation.get(), MyColor * 1.5f * FlashAlpha * FormAlpha);
            }
            if (ErrorAlpha > 0)
            {
                Render.DrawSprite(HudItem.GlowTexture, Position, FormSize * 2, Rotation.get(), Color.Red * 1.5f * ErrorAlpha * FormAlpha);
                Render.DrawSprite(FactionEvent.LossTexture, Position, FormSize, Rotation.get(), Color.Red * 1.5f * ErrorAlpha * FormAlpha);
            }
            if (SelectedAlpha > 0)
            {
                Render.DrawSprite(FactionEvent.ReadyTexture, Position, FormSize * SelectedAlpha, Rotation.get(), MyColor * SelectedAlpha * 2 * FormAlpha);
                Render.DrawSprite(HudItem.GlowTexture, Position, FormSize, Rotation.get(), MyColor * SelectedAlpha * FormAlpha * 1.5f);
            }

            if (FormAlpha > 0.5 && Font.get() != null)
            {
                float DrawHeight = Position.Y - Size.Y / 2;
                float FontHeight = Font.get().MeasureString(Name.get()).Y;
                DrawHeight -= FontHeight * 2;

                string CostString = "";
                if (MyCard.FactionCostIncreases.ContainsKey(ParentShip.FactionNumber))
                {
                    CostString = "$" + (MyCard.CardCellsCost + MyCard.CardCellsCostIncrease * MyCard.FactionCostIncreases[ParentShip.FactionNumber]).ToString();
                }
                else
                {
                    CostString = "$" + (MyCard.CardCellsCost).ToString();
                }

                Render.DrawShadowedText(Font.get(), Text.get(), new Vector2(Position.X - Font.get().MeasureString(Text.get()).X / 2, DrawHeight),
                                        Vector2.One * 2, Color.White * (FormAlpha - 0.5f) * 2, Color.Black * (FormAlpha - 0.5f) * 2);
                DrawHeight -= FontHeight;
                Render.DrawShadowedText(Font.get(), CostString, new Vector2(Position.X - Font.get().MeasureString(CostString).X / 2, DrawHeight),
                                        Vector2.One * 2, Color.White * (FormAlpha - 0.5f) * 2, Color.Black * (FormAlpha - 0.5f) * 2);
                if (FactionManager.GetFaction(ParentShip.FactionNumber).PickingCards)
                {
                    Vector2 s = Font.get().MeasureString(MyCard.Caption);
                    DrawHeight -= s.Y + 20;
                    //DrawHeight += 2 * FontHeight;
                    Render.DrawSprite(HudItem.GlowTexture, new Vector2(Position.X, DrawHeight + s.Y / 2), s * 6,
                                      0, Color.Black * (FormAlpha - 0.5f) * 2);
                    Render.DrawShadowedText(Font.get(), MyCard.Caption, new Vector2(Position.X - Font.get().MeasureString(MyCard.Caption).X / 2, DrawHeight),
                                            Vector2.One * 2, Color.White * (FormAlpha - 0.5f) * 2, Color.Black * (FormAlpha - 0.5f) * 2);
                }

                if (!MyCard.StrongVs.Equals(""))
                {
                    Render.DrawSprite(MyCard.GetStrongTexture(), Position - Size * 3 / 8 * new Vector2(1, -1), Size / 2, 0, Color.White * (FormAlpha * FormAlpha));
                    Render.DrawShadowedText(Font.get(), MyCard.StrongVs,
                                            new Vector2(Position.X - Size.X * 1 / 8, Position.Y - Font.get().MeasureString(MyCard.StrongVs).Y * 3 / 4 + Size.Y / 2),
                                            Vector2.One * 2, Color.White * (FormAlpha - 0.5f) * 2, Color.Black * (FormAlpha - 0.5f) * 2);
                }
            }

            Render.DrawOutlineRect(Position - FormSize * (FormAlpha - 0.5f), Position + FormSize * (FormAlpha - 0.5f), 2 * FormAlpha, Color.White * (FormAlpha * FormAlpha * FormAlpha));

            base.DrawAsForm(Position, FormSize);
        }
 public override void Draw(Vector2 Position, Vector2 Size)
 {
     DigitRenderer.DrawDigits(FactionManager.GetFaction(ParentBox.ParentShip.FactionNumber).Cells, 4, Position, Size, TeamInfo.HudColors[ParentBox.ParentShip.GetTeam()] * Alpha);
     base.Draw(Position, Size);
 }
Exemplo n.º 16
0
        public void Update(GameTime gameTime, BasicController MyController, bool Highlighted)
        {
            if (Highlighted && !ParentMenu.Closing)
            {
                TargetPosition = ParentMenu.Position - TechTreeMenu.NegativeOffset - new Vector2(0, Size.Y / 2);
                Position      += (TargetPosition - Position) * gameTime.ElapsedGameTime.Milliseconds * PlayerMenu.CloseOpenSpeed * 2;
                Alpha          = Math.Min(1, Alpha + gameTime.ElapsedGameTime.Milliseconds * PlayerMenu.CloseOpenSpeed * 2);
                if (Alpha > 0.5f)
                {
                    Vector2 CursorPrevious = Cursor;
                    bool    ExtraSticks    = FactionManager.GetFaction(ParentMenu.ParentShip.FactionNumber).PickingCards;
                    Cursor += MyController.MenuStick(ExtraSticks, ExtraSticks, true, false, false);

                    if (ExtraSticks)
                    {
                        Vector2 BumperCursorPrevious = BumperCursor;
                        BumperCursor = MyController.MenuStick(false, false, false, true, true);
                        if (Math.Abs(BumperCursor.X) > 0.1f && Math.Abs(BumperCursor.X) < 0.1f)
                        {
                            Faction f = FactionManager.GetFaction(ParentMenu.ParentShip.FactionNumber);
                            if (BumperCursor.X > 0)
                            {
                                f.CardPickPosition++;
                                if (f.CardPickPosition == f.Cards.Count)
                                {
                                    ParentMenu.ParentShip.ReadyMenu();
                                }
                            }
                            else
                            {
                                f.CardPickPosition = Math.Max(0, f.CardPickPosition - 1);
                            }
                        }
                    }

                    if (Cursor.Y != 0 && ParentMenu.MyFaction.PickingCards)
                    {
                        if (Cursor.Y < 0)
                        {
                            TechTreeGroup PreviousGroup = MyNode.Previous != null ? MyNode.Previous.Value : MyNode.List.Last.Value;
                            if (PreviousGroup.Cards != null && PreviousGroup.Cards.Count > 0)
                            {
                                PreviousGroup.Cursor.X = Cursor.X;
                                PreviousGroup.Position = Position - new Vector2(0, PreviousGroup.Size.Y);
                                ParentMenu.SetGroup(PreviousGroup);
                                PreviousGroup.SwitchTo();
                            }
                        }
                        else if (Cursor.Y > 0)
                        {
                            TechTreeGroup NextGroup = MyNode.Next != null ? MyNode.Next.Value : MyNode.List.First.Value;
                            if (NextGroup.Cards != null && NextGroup.Cards.Count > 0)
                            {
                                NextGroup.Cursor.X = Cursor.X;
                                NextGroup.Position = Position + new Vector2(0, Size.Y);
                                ParentMenu.SetGroup(NextGroup);
                                NextGroup.SwitchTo();
                            }
                        }
                        Cursor.Y = 0;
                    }
                    Cursor.X = MathHelper.Clamp(Cursor.X, 0, Cards.Count - 1);

                    int i = 0;
                    foreach (FactionCard c in Cards)
                    {
                        c.MenuUpdate(gameTime, (int)Cursor.X == i, 1 - Math.Abs(Cursor.X - i++) / 2.25f);
                    }

                    Vector2 TargetOffset = -new Vector2((Cursor.X - 2) * CellBorders.X, -CellBorders.Y / 2f);
                    DrawOffset += (TargetOffset - DrawOffset) * OffsetSpeed;

                    HighlightedCard = Cards[(int)Cursor.X];
                    if (MyController.AButton() && !MyController.AButtonPrevious())
                    {
                    }
                    HighlightedCard.Update3D(ParentMenu.ParentShip);
                }
            }
            else
            {
                Alpha = Math.Max(0, Alpha - gameTime.ElapsedGameTime.Milliseconds * PlayerMenu.CloseOpenSpeed);
            }
        }
        public override bool TriggerAsCurrent(BasicMarker m)
        {
            if (BasicMarker.SelectSound != null)
            {
                BasicMarker.SelectSound.Play(BasicMarker.SelectVolume, 0, 0);
            }

            Faction f = FactionManager.Factions[ParentShip.FactionNumber];

            FlashAlpha = 1;

            if (FactionManager.GetFaction(ParentShip.FactionNumber).PickingCards)
            {
                if (Selected)
                {
                    for (int i = 0; i < f.Cards.Count; i++)
                    {
                        if (f.Cards[i] == MyCard)
                        {
                            f.Cards[i] = null;
                            Selected   = false;
                            return(true);
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < f.Cards.Count; i++)
                    {
                        if (f.Cards[i] == null)
                        {
                            f.Cards[i] = MyCard;
                            Selected   = true;
                            break;
                        }
                    }

                    if (!Selected)
                    {
                        f.Cards.Add(MyCard);
                        Selected = true;
                    }

                    if (Faction.MaxCards == f.Cards.Count)
                    {
                        for (int i = 0; i < f.Cards.Count; i++)
                        {
                            if (f.Cards[i] == null)
                            {
                                return(true);
                            }
                        }

                        ParentShip.ReadyMenu();
                    }
                }
            }
            else
            {
                int CardCost = MyCard.CardCellsCost;
                if (MyCard.FactionCostIncreases.ContainsKey(ParentShip.FactionNumber))
                {
                    CardCost += MyCard.CardCellsCostIncrease * MyCard.FactionCostIncreases[ParentShip.FactionNumber];
                }

                if (FactionManager.CanAfford(ParentShip.FactionNumber, CardCost) && ParentShip.CanPlaceTurret(MyCard.TurretSize))
                {
                    if (MyCard.FactionCostIncreases.ContainsKey(ParentShip.FactionNumber))
                    {
                        MyCard.FactionCostIncreases[ParentShip.FactionNumber]++;
                    }
                    else
                    {
                        MyCard.FactionCostIncreases.Add(ParentShip.FactionNumber, 1);
                    }

                    FactionManager.AddCells(ParentShip.FactionNumber, -CardCost);
                    UnitTurret u = (UnitTurret)MyCard.GetUnit(ParentShip.FactionNumber);
                    u.MyCard = MyCard;
                    ParentShip.PlaceTurret(u);
                    //ParentFrame.DeActivate();
                }
                else
                {
                    ErrorAlpha = 1;
                }
            }

            return(base.TriggerAsCurrent(m));
        }