public static IEnumerator AsyncFetch(int x, int y, Counter counter = null) { var www = new WWW(string.Format(API_URL, x, y)); yield return(www); var response = JsonConvert.DeserializeObject <ParcelPublicationsResponse>(www.text); var index = DclMap.CoordinatesToIndex(x, y); if (DclMap.ParcelInfos[index] == null) { DclMap.ParcelInfos[index] = new ParcelInfo(index); } DclMap.ParcelInfos[index].SoldPublications.Clear(); for (int i = 0; i < response.data.Count; i++) { var publication = response.data[i]; if (publication.status == "sold") { DclMap.ParcelInfos[index].SoldPublications.Add(publication); } } DclMap.ParcelInfos[index].LastFetchPublicationsTime = Time.realtimeSinceStartup; if (counter != null) { counter.responseCount++; } }
public static IEnumerator AsyncFetch(int n, int w, int s, int e, Counter counter) { var www = new WWW(string.Format(API_URL + "?nw={0},{1}&se={2},{3}", w, n, e, s)); yield return(www); // Debug.Log(counter.responseCount + "|"+ www.text); if (counter != null) { counter.responseCount++; } if (www.error == null) { var mapResponse = JsonConvert.DeserializeObject <MapResponse>(www.text); for (int i = 0; i < mapResponse.data.assets.parcels.Count; i++) { var parcel = mapResponse.data.assets.parcels[i]; var index = DclMap.CoordinatesToIndex(parcel.x, parcel.y); DclMap.ParcelInfos[index].Update(parcel); } } else { Debug.LogError(www.error); } }
public bool IsRoadside() { list.Clear(); if (x > -150) { list.Add(new Coordinates(x - 1, y)); } if (y < 150) { list.Add(new Coordinates(x, y + 1)); } if (x < 150) { list.Add(new Coordinates(x + 1, y)); } if (y > -150) { list.Add(new Coordinates(x, y - 1)); } foreach (var coord in list) { var ind = DclMap.CoordinatesToIndex(coord); if (DclMap.IsRoad[ind]) { return(true); } } return(false); }
public ParcelInfo(int index) { Index = index; var coord = DclMap.IndexToCoordinates(index); x = coord.x; y = coord.y; }
void UpdateBuffers() { // Ensure submesh index is in range if (instanceMesh != null) { subMeshIndex = Mathf.Clamp(subMeshIndex, 0, instanceMesh.subMeshCount - 1); } // Positions if (positionBuffer != null) { positionBuffer.Release(); } positionBuffer = new ComputeBuffer(instanceCount, 16); Vector4[] positions = new Vector4[instanceCount]; for (int i = 0; i < instanceCount; i++) { var coord = DclMap.IndexToCoordinates(i); positions[i] = new Vector4(coord.x * 10, 0, coord.y * 10, i % 17 * 10); } positionBuffer.SetData(positions); instanceMaterial.SetBuffer("positionBuffer", positionBuffer); // Scales // if (scaleBuffer != null) // scaleBuffer.Release(); // scaleBuffer = new ComputeBuffer(instanceCount, 16); // Vector4[] scales = new Vector4[instanceCount]; // for (int i = 0; i < instanceCount; i++) // { // // scales[i] = new Vector4(10, 0, 10, 5f); // } // scaleBuffer.SetData(scales); // instanceMaterial.SetBuffer("scaleBuffer", scaleBuffer); // Indirect args if (instanceMesh != null) { args[0] = (uint)instanceMesh.GetIndexCount(subMeshIndex); args[1] = (uint)instanceCount; args[2] = (uint)instanceMesh.GetIndexStart(subMeshIndex); args[3] = (uint)instanceMesh.GetBaseVertex(subMeshIndex); } else { args[0] = args[1] = args[2] = args[3] = 0; } argsBuffer.SetData(args); cachedInstanceCount = instanceCount; cachedSubMeshIndex = subMeshIndex; }
void DidParcelCubeClick(int index) { var coord = DclMap.IndexToCoordinates(index); SelectedParcel = coord; TxtCoordinates.text = string.Format("{0},{1}", coord.x, coord.y); var sb = new StringBuilder(); var parcelInfo = DclMap.ParcelInfos[index]; //Sold for (var i = 0; i < parcelInfo.SoldPublications.Count; i++) { var publication = parcelInfo.SoldPublications[i]; long timestamp; var succ = long.TryParse(publication.block_time_updated_at, out timestamp); if (succ) { var time = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)).AddMilliseconds(timestamp); sb.AppendLine(time.ToString("g")); } else { sb.AppendLine("ERROR " + timestamp); } sb.AppendFormat("{0:0} MANA\n", publication.price); sb.Append("—\n"); } //Auction { sb.AppendLine("Auction"); if (parcelInfo.Parcel == null) { sb.AppendLine("waiting..."); } else { if (parcelInfo.Parcel.auction_price == null) { sb.AppendLine("Not Owned"); } else { sb.AppendFormat("{0:0} MANA\n", parcelInfo.Parcel.auction_price); } } } sb.Append("— END —\n"); TxtDealHistory.text = sb.ToString(); }
public static IEnumerator AsyncFetch(int x, int y) { var www = new WWW(string.Format(API_URL + "/{0}/{1}", x, y)); yield return(www); var response = JsonConvert.DeserializeObject <SingleParcelResponse>(www.text); var parcel = response.data; var index = DclMap.CoordinatesToIndex(parcel.x, parcel.y); DclMap.ParcelInfos[index].Update(parcel); }
static IEnumerator AsyncFetchOpen(int limit, int offset) { var www = new WWW(string.Format(API_URL + "?status=open&limit={0}&offset={1}", limit, offset)); yield return(www); var response = JsonConvert.DeserializeObject <ParcelsResponse>(www.text); for (int i = 0; i < response.data.parcels.Count; i++) { var parcel = response.data.parcels[i]; var index = DclMap.CoordinatesToIndex(parcel.x, parcel.y); DclMap.ParcelInfos[index].Update(parcel); } }
static IEnumerator AsyncFetchOpen(int limit, int offset) { var www = new WWW(string.Format(API_URL + "?status=open&limit={0}&offset={1}", limit, offset)); yield return(www); // Debug.Log(www.text); var response = JsonConvert.DeserializeObject <EstatesResponse>(www.text); for (int i = 0; i < response.data.estates.Count; i++) { var estate = response.data.estates[i]; EstateInfo estateInfo; var findInd = DclMap.EstateInfos.FindIndex(e => e.Estate.id == estate.id); if (findInd >= 0) { estateInfo = DclMap.EstateInfos[findInd]; estateInfo.Update(estate); } else { estateInfo = new EstateInfo(estate); DclMap.EstateInfos.Add(estateInfo); } var data = estate.data; var parcels = data.parcels; for (int j = 0; j < parcels.Count; j++) { var coord = parcels[j]; var index = DclMap.CoordinatesToIndex(coord.x, coord.y); DclMap.ParcelInfos[index].Update(estateInfo); } } }
public static IEnumerator AsyncFetchAll() { var counter = new Counter(); for (int i = 0; i <= DclMap.N; i++)//TODO:太可怕了 { var coord = DclMap.IndexToCoordinates(i); DclMap.Instance.StartCoroutine(AsyncFetch(coord.x, coord.y, counter)); } while (true) { yield return(new WaitForEndOfFrame()); if (Time.frameCount % 50 == 0) { Debug.Log("rC=" + counter.responseCount); } if (counter.responseCount >= DclMap.N) { break; } } }
void Awake() { Instance = this; }
void Update() { if (DclMap.HoveredParcelIndex != null) { var index = (int)DclMap.HoveredParcelIndex; HoverFrame.SetActive(true); var rectTra = HoverFrame.GetComponent <RectTransform>(); rectTra.position = Input.mousePosition + new Vector3(50, 0); var parcelInfo = DclMap.ParcelInfos[index]; var coord = DclMap.IndexToCoordinates(index); var sb = new StringBuilder(); sb.AppendFormat("{0},{1}\n", coord.x, coord.y); var open = false; if (parcelInfo != null) { if (parcelInfo.EstateInfo != null) { if (parcelInfo.EstateInfo.Estate.publication != null && parcelInfo.EstateInfo.Estate.publication.status == "open") { open = true; var price = parcelInfo.EstateInfo.Estate.publication.price; var parcelCount = parcelInfo.EstateInfo.Estate.data.parcels.Count; var unitPrice = price / parcelCount; sb.AppendFormat("{0}\n", parcelInfo.EstateInfo.Estate.data.name); sb.AppendFormat("({0}) @ {1}\n{2} MANA", parcelCount, unitPrice, price); } } else if (parcelInfo.Parcel != null) { string name; if (parcelInfo.Parcel.district_id != null) { var district = DclMap.Districts.Find(d => d.id == parcelInfo.Parcel.district_id); if (district != null) { name = district.name; } else { name = "waiting..."; } } else { name = parcelInfo.Parcel.data.name; } sb.AppendFormat("{0}\n", name); if (parcelInfo.Parcel.publication != null && parcelInfo.Parcel.publication.status == "open") { open = true; var price = parcelInfo.Parcel.publication.price; sb.AppendFormat("{0} MANA", price); } } var dealPrice = DclMap.GetLastDealPrice(index); if (dealPrice >= 0) { sb.AppendFormat("\nLast deal @ {0} MANA", dealPrice); } } TxtHover.text = sb.ToString(); } else { HoverFrame.SetActive(false); } }