// public static MapViewNumbers Create(float x, float y, float z, int damage, bool crit, int offsX, int offsY, Player p) { AllodsTextRenderer textRenderer = new AllodsTextRenderer(Fonts.Font2, Font.Align.Center); textRenderer.Text = crit?"CRIT ":"" + (-damage).ToString(); GameObject gObject = textRenderer.GetNewGameObject(0.01f, null, 100); MapViewNumbers mvn = gObject.AddComponent <MapViewNumbers>(); mvn.X = x; mvn.Y = y; mvn.Z = z; mvn.Number = damage; mvn.Critical = crit; mvn.Player = p; mvn.Count = 0; mvn.OffsX = offsX; mvn.OffsY = offsY; mvn.GObject = gObject; mvn.TextRenderer = textRenderer; mvn.GObject.name = string.Format("MapViewNumbers (damage = {0})", mvn.TextRenderer.Text); // return(mvn); }
private void SpawnDamageNumbers(float x, float y, float z, int damage, bool crit, int offsX, int offsY, Player p) { int fromX = Mathf.FloorToInt(x); int fromY = Mathf.FloorToInt(y); int toX = Mathf.CeilToInt(x); int toY = Mathf.CeilToInt(y); // check if any cell around this number is visible bool anyvisible = false; for (int cy = fromY; cy <= toY; cy++) { if (anyvisible) { break; } for (int cx = fromX; cx <= toX; cx++) { if (cx < 8 || cy < 8 || cx >= MapLogic.Instance.Width - 8 || cy >= MapLogic.Instance.Height - 8) { continue; } if ((MapLogic.Instance.Nodes[cx, cy].Flags & MapNodeFlags.Visible) == 0) { continue; } anyvisible = true; break; } } if (!anyvisible) { return; } MapViewNumbers mvn = MapViewNumbers.Create(x, y, z, damage, crit, offsX, offsY, p); mvn.transform.parent = transform; }