public DanceSprite NextMove() { DanceSprite sprite = DanceSprite.Random(); Vector2 pos = Center(); pos.Y = 0; sprite.Sprite.Position = pos + Viewport.Position; sprite.Sprite.Size = SIZE; return(sprite); }
public FilledDisplay[] EnumerateFloor() { FilledDisplay[] floor = new FilledDisplay[9]; IMyCubeBlock topLeft = GridTerminalSystem.GetBlockWithName("P_FLOOR"); if (topLeft != null && topLeft is IMyTextPanel) { DanceSprite[] sprites = DanceSprite.ALL(); Vector3I origin = topLeft.Position; Vector3I Y = Base6Directions.GetIntVector(topLeft.Orientation.Up) * -1; Vector3I X = Base6Directions.GetIntVector(topLeft.Orientation.Left) * -1; Vector3I[] positions = new Vector3I[9]; for (int y = 0; y < 3; y++) { for (int x = 0; x < 3; x++) { positions[(y * 3) + x] = origin + (Y * y) + (X * x); } } int found = 0; List <IMyTextPanel> panels = new List <IMyTextPanel>(); GridTerminalSystem.GetBlocksOfType(panels); foreach (IMyTextPanel panel in panels) { for (int i = 0; i < positions.Length; i++) { if (panel.Position == positions[i]) { floor[i] = new FilledDisplay(panel, sprites[i].Sprite, panel); floor[i].Draw(); Log(String.Format("Addded floor #{0} in position {1}", i, panel.Position)); found++; } } } } return(floor); }
override public void DrawFrame(MySpriteDrawFrame frame) { if (queuedMoves.Count == 0) { queuedMoves.Add(NextMove()); } using (frame) { bool collision = false, over = true; for (int i = queuedMoves.Count - 1; i >= 0; i--) { Vector2 oldPos = queuedMoves[i].Sprite.Position.Value; Vector2 nextPos = oldPos + speed; if (nextPos.Y - Viewport.Y >= Size().Y) { queuedMoves.RemoveAt(i); } else { DanceSprite newMove = queuedMoves[i]; newMove.Sprite.Position = nextPos; if (Collides(newMove.Sprite, activeBox)) { collision = true; if (program._floor != null) { List <MyDetectedEntityInfo> entities = new List <MyDetectedEntityInfo>(); program._sensor.DetectedEntities(entities); foreach (MyDetectedEntityInfo entity in entities) { if (EntityOver(program._floor[newMove.Index].Block, entity)) { if (newMove.Success == false) { points += 1; newMove.Success = true; } } } } over &= newMove.Success; } queuedMoves[i] = newMove; if ((i == queuedMoves.Count - 1) && (nextPos.Y - Viewport.Position.Y >= Size().Y * 0.2)) { queuedMoves.Add(NextMove()); } } } if (collision) { activeBox.Color = over ? Color.Green : Color.Red; } else { activeBox.Color = Color.White; } frame.Add(new MySprite() { Type = SpriteType.TEXT, Data = String.Format("Points {0}", points), Position = Viewport.Position, RotationOrScale = 1.0f, Color = Color.Red, Alignment = TextAlignment.LEFT, FontId = "White" }); frame.Add(activeBox); frame.AddRange(queuedMoves.ConvertAll(move => move.Sprite)); } }
public static MySprite Convert(DanceSprite sprite) { return(sprite.Sprite); }