/// <summary> /// Check for generators for fill vacancies and generate new hexagon elements /// </summary> /// <param name="fillElements">Fill elements</param> /// <param name="randomColomGenerators">Generator indexes to drop bomb</param> private void GenerateNewElements(List <MoveElement> fillElements, ref int bombNumber) { for (int i = 0; i < this.generators.Count; i++) // Iterate for every generators { int x = generators[i].target.Item1; int y = generators[i].target.Item2; foreach (HexagonMove move in this.moves) // For each move { Tuple <int, int> dest = move.Move(this.grid, x, y, generators[i].hexagonElement); if (dest != null) { fillElements.Add(new MoveElement(generators[i].hexagonElement, new Vector2(x, y), new Vector2(x, y))); // Specifies the generation of the hexagpn element MoveElement element = new MoveElement(generators[i].hexagonElement, new Vector2(x, y), new Vector2(dest.Item1, dest.Item2)); fillElements.Add(element); // Generate new hexagon elements with bomb or not if (bombNumber > 0) { generators[i].Generate(true); bombNumber--; } else { generators[i].Generate(); } } } } }
public Tackle() { name = "Tackle"; target = Target.Enemy; moveType = MoveType.Attack; moveElement = MoveElement.None; status = Status.Normal; duration = 1; unlocked = false; attack = MoveManager.Random.Next(0, 0); defense = MoveManager.Random.Next(0, 0); speed = MoveManager.Random.Next(0, 0); health = MoveManager.Random.Next(10, 15); }
public Heal() { name = "Heal"; target = Target.Self; moveType = MoveType.Heal; moveElement = MoveElement.None; status = Status.Normal; unlocked = false; duration = 1; attack = Avatar.Random.Next(0, 0); defense = Avatar.Random.Next(0, 0); speed = Avatar.Random.Next(0, 0); health = Avatar.Random.Next(2, 6); }
public Block() { name = "Block"; target = Target.Self; moveType = MoveType.Buff; moveElement = MoveElement.None; status = Status.Normal; unlocked = false; duration = 5; attack = MoveManager.Random.Next(0, 0); defense = MoveManager.Random.Next(2, 6); speed = MoveManager.Random.Next(0, 0); health = MoveManager.Random.Next(0, 0); }
public RockThrow() { name = "Rock Throw"; target = Target.Enemy; moveType = MoveType.Attack; moveElement = MoveElement.Earth; status = Status.Normal; duration = 1; unlocked = false; attack = Avatar.Random.Next(0, 0); defense = Avatar.Random.Next(0, 0); speed = Avatar.Random.Next(0, 0); health = MoveManager.Random.Next(15, 20); }
public Bless() { name = "Bless"; target = Target.Self; moveType = MoveType.Buff; moveElement = MoveElement.Light; status = Status.Normal; unlocked = false; duration = 5; attack = Avatar.Random.Next(2, 6); defense = Avatar.Random.Next(2, 6); speed = Avatar.Random.Next(2, 6); health = Avatar.Random.Next(0, 0); }
public Frostbite() { name = "Frostbite"; target = Target.Enemy; moveType = MoveType.Attack; moveElement = MoveElement.Water; status = Status.Normal; duration = 1; unlocked = false; attack = Avatar.Random.Next(0, 0); defense = Avatar.Random.Next(0, 0); speed = Avatar.Random.Next(0, 0); health = MoveManager.Random.Next(15, 20); }
public Curse() { name = "Curse"; target = Target.Enemy; moveType = MoveType.Debuff; moveElement = MoveElement.Dark; status = Status.Normal; unlocked = false; duration = 5; attack = Avatar.Random.Next(2, 6); defense = Avatar.Random.Next(2, 6); speed = Avatar.Random.Next(2, 6); health = Avatar.Random.Next(0, 0); }
/// <summary> /// Check for vacancies to fill these vacancies with other hexagon elements /// </summary> /// <param name="fillElementss">Fill elements</param> private void CheckForVacanciesAndMoveHexagonElementsToVacancies(List <MoveElement> fillElementss) { for (int x = 0; x < this.grid.width; x++) { for (int y = 0; y < this.grid.height; y++) { foreach (HexagonMove move in this.moves) // Check for every specified move { Tuple <int, int> dest = move.Move(this.grid, x, y); if (dest != null) // Move is valid then create move elemnt and add it to the fill element { MoveElement element = new MoveElement((HexagonElement)this.grid.GetElement(x, y), new Vector2(x, y), new Vector2(dest.Item1, dest.Item2)); fillElementss.Add(element); } } } } }
void Start() { time = 50; score = 50; gcontroller = GameObject.FindWithTag("GameController").GetComponent <GameController>(); play_info = GameViewPanel.GetComponent <MoveElement>(); Numbers = play_info.posNumbers; for (int i = 0; i < Numbers.Count; i++) { GameObject NewObj = new GameObject(); Image NewImage = NewObj.AddComponent <Image>(); RectTransform NewRect = NewObj.GetComponent <RectTransform>(); Vector3 position = new Vector3(Numbers[i].x, Numbers[i].y, 0.0f); NewRect.SetPositionAndRotation(position, new Quaternion(0, 0, 0, 1)); NewRect.localScale = new Vector3(0.6f, 0.6f, 0.6f); anchonum = NewRect.rect.width; NewRect.SetParent(GetComponent <RectTransform>()); NewObj.SetActive(true); switch (play_info.valNumbers[i]) { case 1: NewImage.sprite = play_info.Sprites[0]; break; case 2: NewImage.sprite = play_info.Sprites[1]; break; case 3: NewImage.sprite = play_info.Sprites[2]; break; case 4: NewImage.sprite = play_info.Sprites[3]; break; case 5: NewImage.sprite = play_info.Sprites[4]; break; case 6: NewImage.sprite = play_info.Sprites[5]; break; case 7: NewImage.sprite = play_info.Sprites[6]; break; case 8: NewImage.sprite = play_info.Sprites[7]; break; case 9: NewImage.sprite = play_info.Sprites[8]; break; case 10: NewImage.sprite = play_info.Sprites[9]; break; } GONumbers.Add(NewObj); } }
public static float GetMoveModifier(MoveElement moveElement, AvatarElement avatarElement) { float modifier = 1f; switch (moveElement) { case MoveElement.Dark: if (avatarElement == AvatarElement.Light) { modifier += .25f; } else if (avatarElement == AvatarElement.Wind) { modifier -= .25f; } break; case MoveElement.Earth: if (avatarElement == AvatarElement.Water) { modifier += .25f; } else if (avatarElement == AvatarElement.Wind) { modifier -= .25f; } break; case MoveElement.Fire: if (avatarElement == AvatarElement.Wind) { modifier += .25f; } else if (avatarElement == AvatarElement.Water) { modifier -= .25f; } break; case MoveElement.Light: if (avatarElement == AvatarElement.Dark) { modifier += .25f; } else if (avatarElement == AvatarElement.Earth) { modifier -= .25f; } break; case MoveElement.Water: if (avatarElement == AvatarElement.Fire) { modifier += .25f; } else if (avatarElement == AvatarElement.Earth) { modifier -= .25f; } break; case MoveElement.Wind: if (avatarElement == AvatarElement.Light) { modifier += .25f; } else if (avatarElement == AvatarElement.Earth) { modifier -= .25f; } break; } return(modifier); }
internal void Move(int Pos) { this.Position -= Pos; MoveElement?.Invoke($"element moved by {Pos}"); }
public void MoveSimilarElementToEnd() { int[] expected = new int[] { 4, 1, 3, 2, 2, 2, 2, 2 }; int[] actual = MoveElement.ToEnd(array, 2); Assert.AreEqual(expected, actual); }
public void MoveSimilarElementToStart() { int[] expected = new int[] { 2, 2, 2, 2, 2, 3, 4, 1 }; int[] actual = MoveElement.ToStart(array, 2); Assert.AreEqual(expected, actual); }
public void DecodeFromPacket(Packet packet, MovementSource source) { PacketCreationDate = packet.PacketCreationTime; Source = source; short foothold = 0; byte stance = 0; var x = packet.ReadShort(); var y = packet.ReadShort(); OriginalPosition = new Pos(x, y); var movementCount = packet.ReadByte(); Elements = new MoveElement[movementCount]; for (var i = 0; i < movementCount; i++) { var mt = (MovementType)packet.ReadByte(); var me = new MoveElement { Type = mt, Foothold = foothold, X = x, Y = y, Stance = stance }; switch (mt) { case MovementType.NormalMovement: case MovementType.NormalMovement2: me.X = packet.ReadShort(); me.Y = packet.ReadShort(); me.XVelocity = packet.ReadShort(); me.YVelocity = packet.ReadShort(); me.Foothold = packet.ReadShort(); me.Stance = packet.ReadByte(); me.TimeElapsed = packet.ReadShort(); break; case MovementType.Jump: case MovementType.JumpKb: case MovementType.FlashJump: me.XVelocity = packet.ReadShort(); me.YVelocity = packet.ReadShort(); me.Stance = packet.ReadByte(); me.TimeElapsed = packet.ReadShort(); break; case MovementType.Immediate: case MovementType.Teleport: case MovementType.Assaulter: me.X = packet.ReadShort(); me.Y = packet.ReadShort(); me.Foothold = packet.ReadShort(); me.Stance = packet.ReadByte(); me.TimeElapsed = packet.ReadShort(); break; case MovementType.Falling: me.Stat = packet.ReadByte(); break; default: me.Stance = packet.ReadByte(); me.TimeElapsed = packet.ReadShort(); break; } x = me.X; y = me.Y; foothold = me.Foothold; stance = me.Stance; Elements[i] = me; } var keypadStates = packet.ReadByte(); for (var i = 0; i < keypadStates; i++) { if ((i % 2) == 0) { packet.ReadByte(); } } NewPosition = new Pos(x, y); NewStance = stance; NewFoothold = foothold; }