/// <summary> /// 接收来自指令中心的指令 /// </summary> /// <param name="beatMessage"></param> /// <returns></returns> public static BeatResult HeartBeat(BeatMessage beatMessage) { BeatResult result = new BeatResult() { Result = Model.BeatResultEnum.Failed }; InstructionServiceClient client = null; try { if (beatMessage != null) { client = new InstructionServiceClient(); result = client.HeartBeat(beatMessage); if (result != null && result.Result == Model.BeatResultEnum.Success) { ExecInstruction(result.TaskList.Where(t => t.TaskExecutor.Equals(beatMessage.HostIP) && t.Status == Model.TaskMessageStatusEnum.None)); } } } finally { if (client != null) { client.Close(); } } return(result); }
public override void OnBeatSuccess(BasePlanet planet, BeatResult result) { if (planet != this) { return; } int resultBonus = result == BeatResult.Awesome ? 2 : 1; if (planetState == PlanetState.Colonized) { List <BasePlanet> destroyed = manager.GetDestroyedPlanets(teamID); if (destroyed.Count > 0 && manager.GetResourceType(repairCost.type) >= repairCost.amount) { int idx = UnityEngine.Random.Range(0, destroyed.Count - 1); destroyed[idx].Repair(); manager.SpendResource(repairCost.type, repairCost.amount); } else { int units = baseBeatRate * resultBonus; Debug.LogFormat("Adding {0} units of {1}", units, PlanetUtils.GetResourceName(resourceType)); manager.AddResource(resourceType, units); } } BlinkColour(); CheckColonize(planet); }
public override void OnBeatSuccess(BasePlanet planet, BeatResult result) { if (planet != this) { return; } int resultBonus = result == BeatResult.Awesome ? 3 : result == BeatResult.Good ? 2 : 1; if (planetState == PlanetState.Colonized && CanSpawnShip()) { int units = defaultSpawnCount * resultBonus; Debug.LogFormat("Spawning {0} {1} units", units, shipPrefab.shipName); for (int i = 0; i < units; ++i) { BaseShip s = Instantiate <BaseShip>(shipPrefab); s.name = string.Format("{0}#{1}", s.shipName, counter++); s.SetHQ(hq); manager.SpendResourceList(shipSpawnRequirements); manager.RegisterShip(s); } } base.OnBeatSuccess(planet, result); }
void AddPlayerPoints(BeatResult result) { Beat beat = m_playList[m_songIndex].beats[m_beatIndex]; m_camera.ShakeCamera(beat.shakeDuration, beat.shakeAmplitude, beat.shakeRate); float points = (int)result; m_player.AddPoints(points); m_beatIndex++; m_screenFlare.gameObject.SetActive(true); StartCoroutine(FadeFlare()); }
public override void OnBeatSuccess(BasePlanet planet, BeatResult result) { if (planet != this) { return; } float resultBonus = result == BeatResult.Awesome ? damageBonus : 1.0f; if (CanAttackPlanet()) { manager.LaunchAttack(this, resultBonus); } base.OnBeatSuccess(planet, result); }
public override void OnBeatSuccess(BasePlanet planet, BeatResult result) { if (planet != this) { return; } int resultBonus = result == BeatResult.Awesome ? 2 : 1; if (planetState == PlanetState.Colonized) { int units = baseBeatRate * resultBonus; Debug.LogFormat("Adding {0} units of {1}", units, PlanetUtils.GetResourceName(resourceType)); manager.AddResource(resourceType, units); } base.OnBeatSuccess(planet, result); }
private static void Heat(object dataBuffer) { try { BeatMessage beatMessage = new BeatMessage(); beatMessage.HostIP = ServerProfile.ServerIP; BeatResult result = InstructionServiceBusiness.HeartBeat(beatMessage); Process.Debug(ikey, "发送心跳到指令中心", "Heat", "", "发送心跳到指令中心,返回消息:" + JsonConvert.SerializeObject(result), ""); } catch (Exception ex) { Process.Error(ikey, "发送心跳到指令中心", "Heat", "", "发送心跳到指令中心,发生异常:" + ex.GetString(), ""); } finally { SystemHeatService.AddDataToBuffer(); } }
/// <summary> /// 请求并接收指令中心的数据 /// </summary> /// <param name="beatMessage"></param> /// <returns></returns> public BeatResult HeartBeat(BeatMessage beatMessage) { lock (_lockObj) { BeatResult beatResult = new BeatResult(); beatResult.TaskList = new List <TaskMessage>(); var tempList = _taskList.Where(t => t.TaskExecutor.Equals(beatMessage.HostIP) && t.Status == TaskMessageStatusEnum.None); foreach (var item in tempList) { var msg = MappingHelper.From <TaskMessage, TaskMessage>(item); beatResult.TaskList.Add(msg); } beatResult.Result = BeatResultEnum.Success; _taskList.Where(t => t.TaskExecutor.Equals(beatMessage.HostIP)).ToList() .ForEach(t => t.Status = TaskMessageStatusEnum.Executed); DistributedCache.Add(CacheKeys.InstuctionTaskListCacheKey, _taskList, DateTime.Now.AddYears(1)); return(beatResult); } }
public async Task <long> SendBeat(BeatInfo beatInfo) { try { _logger.Debug($"[BEAT] {_namespace} sending beat to server: {beatInfo}"); Dictionary <string, string> paramValue = new Dictionary <string, string>(); paramValue.Add(BEAT_KEY, beatInfo.ToString()); paramValue.Add(NAMESPACE_ID_KEY, _namespace); paramValue.Add(SERVICE_NAME_KEY, beatInfo.ServiceName); // 根据Open API确少 groupName参数 string result = await ReqApi(UtilAndComs.NACOS_URL_BASE + "/instance/beat", paramValue, HttpMethod.Put); BeatResult beatResult = JsonConvert.DeserializeObject <BeatResult>(result); return(beatResult.ClientBeatInterval); } catch (Exception ex) { _logger.Error(ex, $"[CLIENT-BEAT] failed to send beat: {beatInfo}"); } return(0L); }
public virtual void OnBeatSuccess(BasePlanet planet, BeatResult result) { BlinkColour(); CheckColonize(planet); }