public MissionTargetMapUnit(Map map, MissionTarget missionTarget, Vector movementOffset) : base(map, missionTarget, movementOffset) { this.missionTarget = missionTarget; DominationRadius = missionTarget.DominationRadius; Team = missionTarget.Team; }
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); }
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(); } }
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(); } }
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); }
/// <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); }
public bool GetTargetById(int targetId, out MissionTarget missionTarget) { return(_targets.TryGetValue(targetId, out missionTarget)); }
//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>(); }