public void SendEdu(EduEvent ev, string key) { var transaction = GetOrCreateTransactionForDest(ev.destination); var existingItem = transaction.edus.FindIndex(edu => edu.InternalKey == key); if (existingItem >= 0) { transaction.edus.RemoveAt(existingItem); } ev.InternalKey = key; SendEdu(ev); }
public static FederationStreamRow FromRaw(string rawDataString) { var parsed = JsonConvert.DeserializeObject <List <dynamic> >(rawDataString); var typeId = ""; var streamRow = new FederationStreamRow(); for (var i = 0; i < parsed.Count; i++) { if (i == 0) { typeId = parsed[0]; } else if (typeId == "k") // KeyedEduRow { var edu = new EduEvent { edu_type = parsed[i].edu.edu_type, destination = parsed[i].edu.destination, origin = parsed[i].edu.origin, content = parsed[i].edu.content }; string[] key = parsed[i].key.ToObject <string[]>(); streamRow.keyedEdus.Add(key, edu); } else if (typeId == "p") // PresenceRow { streamRow.presence.Add(((JObject)parsed[i]).ToObject <PresenceState>()); } else if (typeId == "e") // EduRow { streamRow.edus.Add(new EduEvent { edu_type = parsed[i].edu_type, destination = parsed[i].destination, origin = parsed[i].origin, content = parsed[i].content }); } else if (typeId == "d") // DeviceRow { string destination = parsed[i]["destination"].Value; streamRow.devices.Add(destination); } } return(streamRow); }
/// <summary> /// 养成模式静态数据 /// </summary> public static List <EduEvent> GetStaticEduEvents() { List <EduEvent> events = new List <EduEvent>(); string path = Constants.DEBUG ? Constants.EDU_DEBUG_PATH : Constants.EDU_PATH; foreach (TextAsset text in Resources.LoadAll <TextAsset>(path)) { JsonData jsondata = JsonMapper.ToObject(text.text); foreach (JsonData data in jsondata) { EduEvent ee = new EduEvent(data); //Debug.Log("读取:" + ee.name); events.Add(ee); } } return(events); }
public void SendEdu(EduEvent obj) { if (obj.destination == _serverName) { return; } // Prod device messages if we've not seen this destination before. if (!_destLastDeviceMsgStreamId.ContainsKey(obj.destination)) { SendDeviceMessages(obj.destination); } var transaction = GetOrCreateTransactionForDest(obj.destination); transaction.edus.Add(obj); AttemptTransaction(obj.destination); }
/// <summary> /// 养成按钮触发 /// </summary> /// <param name="x">养成按钮编号</param> public void Execute(int x) { Debug.Log("你选择了" + allEvents[x].name); EduEvent selectEvent = allEvents[x]; string foreclass = defaultEnum[forenoon]; string afterclass = defaultEnum[afternoon]; //由体力决定成功率 float successrate = player.energyPoint * 0.9f; //符合课表 增加成功率 if (selectEvent.name.Contains(foreclass) || selectEvent.name.Contains(afterclass)) { successrate += 0.1f; } float seed = UnityEngine.Random.Range(0f, 1f); bool success = seed < successrate; //系数1 成功则1.5倍 失败减半 float index1 = success ? 1.51f : 0.5f; //系数2 课表加成 float index2 = 1f; //TODO:假日的判定有课才加倍? if (!DataManager.GetInstance().IsHoliday()) { if (selectEvent.name.Contains(foreclass)) { index2 = foreindex; } if (selectEvent.name.Contains(afterclass)) { index2 = afterindex; } } //执行各项属性值 加倍 int[] change = new int[5] { 0, 0, 0, 0, 0 }; foreach (KeyValuePair <string, EduStatistic> kv in selectEvent.statistic) { EduStatistic es = kv.Value; if (es == null) { continue; } //养成初始区间内随机值 float final = UnityEngine.Random.Range(es.min, es.max); //正数 才乘以系数 if (final > 0) { final *= index1; if (kv.Key == foreclass || kv.Key == afterclass) { final *= index2; } } int i = Array.IndexOf(defaultEnum, kv.Key); change[i] = (int)Math.Round(final); } int energyCost = selectEvent.ap; //动画显示(养成Q版与数值跳跃) StartCoroutine(ShowResult(selectEvent.name, change, energyCost, success)); //数值更新 for (int i = 0; i < 5; i++) { player.AddBasicStatus(defaultEnum[i], change[i]); } player.AddEnergy(energyCost); }
/// <summary> /// 养成按钮得触发 /// </summary> /// <param name="x">养成按钮编号</param> public void Execute(int x) { Debug.Log("你选择了" + allEvents[x].name); //执行计算并更改 EduEvent selectEvent = allEvents[x]; //由体力决定成功率(体力即成功率) float successrate = player.energyPoint * 0.9f; if (selectEvent.name.Contains(foreclass) || selectEvent.name.Contains(afterclass)) { successrate += 0.1f; } //成功则加倍 失败减半 float seed = UnityEngine.Random.Range(0f, 1f); bool success = seed < successrate; //系数1 成功 float index1 = success ? 1.5f : 0.5f; //系数2 课表加成 float index2 = 1f; //TODO:假日的判定有课才加倍 if (!DataManager.GetInstance().IsHoliday()) { if (selectEvent.name.Contains(foreclass)) { index2 = foreindex; } if (selectEvent.name.Contains(afterclass)) { index2 = afterindex; } } //执行各项属性值 加倍 Dictionary <string, int> change = new Dictionary <string, int>(); foreach (KeyValuePair <string, EduStatistic> kv in selectEvent.statistic) { if (kv.Value != null) { //养成区间内随机值 float final = UnityEngine.Random.Range(kv.Value.min, kv.Value.max); //正数 才乘以系数 if (final > 0) { final *= index1; if (kv.Key == foreclass || kv.Key == afterclass) { final *= index2; } } change.Add(kv.Key, (int)final); } } int energyCost = selectEvent.ap; //养成Q版动画显示 StartCoroutine(ShowResult(selectEvent.name, change, energyCost, success)); //数值更新 foreach (KeyValuePair <string, int> kv in change) { player.AddBasicStatus(kv.Key, kv.Value); } player.AddEnergy(energyCost); }