public MissionTargetMapUnit(Map map, MissionTarget missionTarget, Vector movementOffset)
            : base(map, missionTarget, movementOffset)
        {
            this.missionTarget = missionTarget;

            DominationRadius = missionTarget.DominationRadius;
            Team             = missionTarget.Team;
        }
Exemple #2
0
        public static void PlaceRandomPoint(IZone zone, Position position, int findRadius)
        {
            var x = position.X;
            var y = position.Y;

            var name = MissionTarget.GenerateName(MissionTargetType.rnd_point, zone.Id, "spot");

            MissionTarget.InsertMissionTargetSpot(name, MissionTargetType.rnd_point, x, y, zone.Id, findRadius);
        }
    /// <summary>
    /// 创建任务目标
    /// </summary>
    /// <param name="missionTid">子任务id</param>
    /// <returns></returns>
    private MissionTargetVO CreateMissionTargetVO(uint missionTid)
    {
        MissionTarget   cfg = GetCfgMissionProxy().GetMissionTargetByKey(GetCfgMissionProxy().GetMissionByKey(missionTid).TargetId);
        MissionTargetVO vo  = new MissionTargetVO();

        vo.Tid = cfg.Id;
        vo.MissionTargetConfig = cfg;
        vo.MissionTargetType   = (MissionTargetType)cfg.Type;
        vo.DoneToFinish        = cfg.FinishType == 1; //1是达成型即完成
        vo.HudVisible          = cfg.HudVisible == 1; //1是可见

        return(vo);
    }
Exemple #4
0
        public void HandleRequest(IZoneRequest request)
        {
            using (var scope = Db.CreateTransaction())
            {
                var targetId = request.Data.GetOrDefault <int>(k.ID);

                var x = request.Data.GetOrDefault <int>(k.x);
                var y = request.Data.GetOrDefault <int>(k.y);

                MissionTarget.UpdatePosition(targetId, x, y);
                Message.Builder.FromRequest(request).WithOk().Send();

                scope.Complete();
            }
        }
Exemple #5
0
        public void HandleRequest(IZoneRequest request)
        {
            using (var scope = Db.CreateTransaction())
            {
                var eid  = request.Data.GetOrDefault <long>(k.eid);
                var unit = request.Zone.GetUnitOrThrow(eid);
                unit.ED.CategoryFlags.IsCategory(CategoryFlags.cf_mission_structures).ThrowIfFalse(ErrorCodes.DefinitionNotSupported);

                request.Zone.UnitService.RemoveDefaultUnit(unit, true);
                MissionTarget.DeleteByStrucureEid(eid);
                unit.RemoveFromZone();

                Message.Builder.FromRequest(request).WithOk().Send();

                scope.Complete();
            }
        }
Exemple #6
0
        public static void UpdateMissionStructure(IZone zone, long structureEid, int orientation = -1, Position position = new Position())
        {
            var unit = zone.GetUnitOrThrow(structureEid);

            if (!position.Equals(default(Position)))
            {
                position             = zone.FixZ(position);
                unit.CurrentPosition = position;

                var mstructure = unit as MissionStructure;
                if (mstructure != null)
                {
                    MissionTarget.UpdatePositionByStructureEid(structureEid, position);
                }
            }

            if (orientation != -1)
            {
                unit.Orientation = (orientation % (byte.MaxValue + 1)) / (double)byte.MaxValue;
            }

            zone.UnitService.UpdateDefaultUnit(unit);
        }
Exemple #7
0
        /// <summary>
        /// converting from old mission structure targets. writing eid to a new column
        /// </summary>
        /// <param name="missionTarget"></param>
        private static void FindMyStructure(MissionTarget missionTarget)
        {
            var switchDefinitions     = EntityServices.Defaults.GetAll().GetDefinitionsByCategoryFlag(CategoryFlags.cf_mission_switch);
            var kioskDefinitions      = EntityServices.Defaults.GetAll().GetDefinitionsByCategoryFlag(CategoryFlags.cf_kiosk);
            var itemSupplyDefinitions = EntityServices.Defaults.GetAll().GetDefinitionsByCategoryFlag(CategoryFlags.cf_item_supply);

            string defz;

            switch (missionTarget.Type)
            {
            case MissionTargetType.submit_item:
                defz = kioskDefinitions.ArrayToString();
                break;

            case MissionTargetType.use_switch:
                defz = switchDefinitions.ArrayToString();
                break;

            case MissionTargetType.use_itemsupply:
                defz = itemSupplyDefinitions.ArrayToString();
                break;

            default:
                throw new Exception("mijen type? " + missionTarget);
            }


            var xMin = missionTarget.targetPosition.X - missionTarget.TargetPositionRange;
            var xMax = missionTarget.targetPosition.X + missionTarget.TargetPositionRange;
            var yMin = missionTarget.targetPosition.Y - missionTarget.TargetPositionRange;
            var yMax = missionTarget.targetPosition.Y + missionTarget.TargetPositionRange;

            var q = "SELECT eid FROM dbo.zoneentities WHERE zoneID=@zoneId AND @xmin < x AND x < @xmax AND @ymin < y AND y < @ymax and definition in (" + defz + ")";

            var eidList =
                Db.Query().CommandText(q)
                .SetParameter("@zoneid", missionTarget.ZoneId)
                .SetParameter("@xmin", xMin)
                .SetParameter("@xmax", xMax)
                .SetParameter("@ymin", yMin)
                .SetParameter("@ymax", yMax)
                .Execute()
                .Select(r => r.GetValue <long>(0))
                .ToList();



            if (eidList.IsNullOrEmpty())
            {
                Logger.Error("no structure was found for mission target: " + missionTarget);
                return;
            }

            if (eidList.Count == 1)
            {
                var structureEid = eidList.First();
                Logger.Info("exactly one structure was found " + structureEid);

                Db.Query().CommandText("update missiontargets set structureeid=@eid where id=@id")
                .SetParameter("@id", missionTarget.id)
                .SetParameter("@eid", structureEid)
                .ExecuteNonQuery();



                return;
            }

            Logger.Warning("multiple items were found " + missionTarget);
        }
Exemple #8
0
 public bool GetTargetById(int targetId, out MissionTarget missionTarget)
 {
     return(_targets.TryGetValue(targetId, out missionTarget));
 }
Exemple #9
0
        //Paint Ereignisse
        private void RadarScreenPaintEventHandler(object sender, PaintEventArgs e)
        {
            if (!controller.ShipReady)
            {
                return;
            }

            // Compute magnification factor
            int radarScreenMinDimension = Math.Min(radarScreen.Width, radarScreen.Height);
            // Make screen at least 2000x2000 flattiverse miles with Ship at center
            // i.e. minimum screenPixels corresponds to 2000 flattiverse miles
            float displayFactor = radarScreenMinDimension / 1000f;

            //Mittelpunkt radarScreen
            float centerX = radarScreen.Width / 2;
            float centerY = radarScreen.Height / 2;

            float shipRadius = controller.ShipRadius * displayFactor;

            //Raunschiff einzeichnen
            Graphics g = e.Graphics;

            g.DrawEllipse(Pens.White, centerX - shipRadius, centerY - shipRadius, shipRadius * 2, shipRadius * 2); //Schiff

            Pen nicerStift = new Pen(Brushes.WhiteSmoke);

            nicerStift.DashPattern = new float[] { 8F, 8F };

            g.DrawEllipse(nicerStift, centerX - controller.ShootLimit, centerY - controller.ShootLimit, controller.ShootLimit * 2, controller.ShootLimit * 2); //ShootLimit Radius

            //TODO: LERNEN WIE MAN ELLIPSE MIT FARBEN FÜLLEN KANN


            Console.WriteLine(units.Count);
            //Gescannte Objekte einzeichnen
            foreach (Unit u in units)
            {
                //Position des Units bestimmen
                float uX = centerX + u.Position.X * displayFactor;
                float uY = centerY + u.Position.Y * displayFactor;
                float uR = u.Radius * displayFactor;

                //Objekte beschriften
                String uName = u.Name.ToString();
                String uKind = u.Kind.ToString();

                Font defaultFont = SystemFonts.DefaultFont;

                SizeF  size                   = g.MeasureString(uName, SystemFonts.DefaultFont);
                PointF pointUname             = new PointF(uX - uR, uY - uR);
                PointF pointUkind             = new PointF(uX - uR, (uY - uR) + 40);
                PointF pointUmissiontargetSeq = new PointF(uX - uR, (uY - uR) + 60);

                if (size.Width < uR * 2)
                {
                    g.DrawString(uName, defaultFont, Brushes.White, uX - size.Width / 2, uY - size.Height / 2);
                    g.DrawString(uKind, defaultFont, Brushes.White, pointUkind);
                }
                else
                {
                    g.DrawString(uName, defaultFont, Brushes.White, pointUname);
                }
                //Unterschiedliche Farben je nach UnitTyp
                switch (u.Kind)
                {
                case UnitKind.Sun:
                {
                    g.DrawEllipse(Pens.DarkOrange, uX - uR, uY - uR, uR * 2, uR * 2);

                    foreach (Corona corona in ((Sun)u).Coronas)
                    {
                        g.DrawEllipse(Pens.YellowGreen, uX - corona.Radius * displayFactor, uY - corona.Radius * displayFactor, corona.Radius * 2 * displayFactor, corona.Radius * 2 * displayFactor);
                    }
                    break;
                }

                case UnitKind.Planet:
                {
                    g.DrawEllipse(Pens.DarkBlue, uX - uR, uY - uR, uR * 2, uR * 2);

                    break;
                }

                case UnitKind.Meteoroid:
                {
                    g.DrawEllipse(Pens.LightBlue, uX - uR, uY - uR, uR * 2, uR * 2);
                    break;
                }

                case UnitKind.PlayerShip:
                {
                    switch (u.Team.Name)
                    {
                    //DOM I
                    case "Orange":
                        g.DrawEllipse(Pens.DarkOrange, uX - uR, uY - uR, uR * 2, uR * 2);
                        break;

                    case "Blue":
                        g.DrawEllipse(Pens.DarkBlue, uX - uR, uY - uR, uR * 2, uR * 2);
                        break;

                    //DOM II
                    case "Communication Magenta":
                        g.DrawEllipse(Pens.DarkMagenta, uX - uR, uY - uR, uR * 2, uR * 2);
                        break;

                    case "Poisonous Green":
                        g.DrawEllipse(Pens.DarkGreen, uX - uR, uY - uR, uR * 2, uR * 2);
                        break;

                    case "Signalling Orange":
                        g.DrawEllipse(Pens.DarkOrange, uX - uR, uY - uR, uR * 2, uR * 2);
                        break;

                    //STF I
                    //case "Green":



                    default:
                        g.DrawEllipse(Pens.Red, uX - uR, uY - uR, uR * 2, uR * 2);
                        break;
                    }



                    break;
                }

                case UnitKind.Buoy:
                {
                    g.DrawEllipse(Pens.Red, uX - uR, uY - uR, uR * 2, uR * 2);


                    textBox_debug.Clear();
                    textBox_debug.Text = "Message der Boye:" + ((Buoy)u).Message;



                    break;
                }

                case UnitKind.MissionTarget:
                {
                    MissionTarget tar = ((MissionTarget)u);

                    Pen nicerStift2 = new Pen(Brushes.GreenYellow);
                    nicerStift2.DashPattern = new float[] { 3F, 3F };

                    g.DrawEllipse(nicerStift2, uX - uR, uY - uR, tar.DominationRadius * 2, tar.DominationRadius * 2);


                    String uMissiontargetSeq = ((MissionTarget)u).SequenceNumber.ToString();


                    g.DrawString(uMissiontargetSeq, defaultFont, Brushes.White, pointUmissiontargetSeq);
                    break;
                }

                //Alle anderen Units die nicht definiert worden sind.
                default:
                {
                    g.DrawEllipse(Pens.HotPink, uX - uR, uY - uR, uR * 2, uR * 2);
                    break;
                }
                }
            }

            //ProgressBar
            progressBar.Minimum = 0;
            progressBar.Maximum = (int)controller.ShipEnergyMax;
            progressBar.Value   = (int)controller.ShipEnergyLive;

            //ProgressBar Textanzeige
            label_liveEnergy.Text = String.Format("Energy: {0}/{1}", controller.ShipEnergyLive.ToString(), controller.ShipEnergyMax.ToString());

            //Verfügbare Schüsse
            textBox_shots.Text = controller.ShotsAvailable.ToString();

            //Linie Zeichen //TOFIX: LINIE MUSS GEFIXT WERDEN
            //   controller.VecDir.Length = controller.ShootLimit;
            //  Vector vt = Vector.FromXY(drawX,drawY);
            //  Vector vt2 = new Vector(drawX,drawY);
            //  vt2.Length = controller.ShootLimit;
            //  vt.Length = controller.ShootLimit;
            //  g.DrawLine(Pens.White, centerX,centerY,  vt2.X, vt2.Y);
        }
    protected PlayerCntrl cntrl; //управление

    private void Awake()
    {
        int currentLevel = TotalStatistics.CurrentLevel;

        TotalScore          = TotalStatistics.TotalScore;
        ScoreT              = GameObject.FindGameObjectWithTag("ScoreText");
        TimerT              = GameObject.FindGameObjectWithTag("TimerText");
        TargetT             = GameObject.FindGameObjectWithTag("TargetPanel");
        ScoreL              = GameObject.FindGameObjectWithTag("LifeText");
        DiedPanel           = GameObject.FindGameObjectWithTag("DiedPanel");
        LevelCompletedPanel = GameObject.FindGameObjectWithTag("LevelCompletedPanel");
        TargetIMGS          = GameObject.FindGameObjectWithTag("TargetsIMG");
        cooldownIMG         = GameObject.FindGameObjectWithTag("Cooldown").GetComponent <Image>();

        //установление заданий на уровень
        targets     = new MissionTarget[2];
        TargetTexts = new Text[2];
        for (int i = 0; i < 2; i++) //поменять можно
        {
            targets[i] = new MissionTarget();
        }
        TotalStatistics.Mission targetToThisLevel = TotalStatistics.targets[currentLevel];

        targets[0].name           = targetToThisLevel.name1;
        targets[0].current_amount = 0;
        targets[0].target_amount  = targetToThisLevel.target_amount1;
        targets[1].name           = targetToThisLevel.name2;
        targets[1].current_amount = 0;
        targets[1].target_amount  = targetToThisLevel.target_amount2;
        //получаю тексты
        TargetTexts[0] = TargetT.transform.GetChild(0).GetChild(0).GetComponent <Text>();
        TargetTexts[1] = TargetT.transform.GetChild(1).GetChild(0).GetComponent <Text>();

        //получаю картинки
        for (int i = 0; i < 2; i++)
        {
            string name = targets[i].name;
            if (name != "None")
            {
                if (name == "Enemys1")
                {
                    TargetT.transform.GetChild(i).gameObject.GetComponent <Image>().sprite = TargetIMGS.transform.GetChild(0).GetComponent <SpriteRenderer>().sprite;
                }
                else
                {
                    if (name == "Enemys2")
                    {
                        TargetT.transform.GetChild(i).gameObject.GetComponent <Image>().sprite = TargetIMGS.transform.GetChild(1).GetComponent <SpriteRenderer>().sprite;
                    }
                    else
                    {
                        if (name == "Enemys3")
                        {
                            TargetT.transform.GetChild(i).gameObject.GetComponent <Image>().sprite = TargetIMGS.transform.GetChild(2).GetComponent <SpriteRenderer>().sprite;
                        }
                        else
                        {
                            if (name == "Enemys4")
                            {
                                TargetT.transform.GetChild(i).gameObject.GetComponent <Image>().sprite = TargetIMGS.transform.GetChild(3).GetComponent <SpriteRenderer>().sprite;
                            }
                            else
                            {
                                if (name == "Enemys5")
                                {
                                    TargetT.transform.GetChild(i).gameObject.GetComponent <Image>().sprite = TargetIMGS.transform.GetChild(4).GetComponent <SpriteRenderer>().sprite;
                                }
                                else
                                if (name == "Enemys6")
                                {
                                    TargetT.transform.GetChild(i).gameObject.GetComponent <Image>().sprite = TargetIMGS.transform.GetChild(5).GetComponent <SpriteRenderer>().sprite;
                                }
                            }
                        }
                    }
                }
            }
        }
        //установка размеров
        Scale.Set(targetToThisLevel.sizePlayer, targetToThisLevel.sizePlayer, 1);
        transform.localScale = Scale;

        _anim     = GetComponent <Animator>();
        cntrl     = GetComponent <PlayerCntrl>();
        ScoreText = ScoreT.GetComponent <Text>();
        LifesText = ScoreL.GetComponent <Text>();
        TimerText = TimerT.GetComponent <Text>();
    }