private void MoveRB(MoveEffect effect) { if (effect.faceMoveDirection) { transform.root.localScale = new Vector3(effect.moveDirection.normalized.x, transform.root.localScale.y, transform.root.localScale.z); } // Set velocity move event if (effect.moveType == MoveEffect.MoveType.Velocity) { Vector2 direction = effect.moveDirection.normalized * effect.speed; direction += Vector2.up * effect.movingRB.velocity.y; effect.movingRB.velocity = direction; } else if (effect.moveType == MoveEffect.MoveType.Force) { effect.movingRB.AddForce(effect.moveDirection.normalized * effect.speed, ForceMode2D.Force); } else if (effect.moveType == MoveEffect.MoveType.Impulse) { effect.movingRB.AddForce(effect.moveDirection.normalized * effect.speed, ForceMode2D.Impulse); } // Maybe cap the velocity if (effect.capMaxSpeed && effect.movingRB.velocity.magnitude > effect.maxSpeed) { effect.movingRB.velocity = effect.moveDirection.normalized * effect.maxSpeed + Vector2.up * effect.movingRB.velocity.y; } }
/// <summary> /// Handles a move request by a player and signal it to the other processes /// </summary> /// <param name="moveRequest"></param> /// <param name="sender"></param> private void HandleMovePlayer(MoveRequest moveRequest, ActorProcess sender) { // Pessimistically assume the move is going to be denied MoveSignal moveSignal = new MoveSignal { InitialTile = sender.Position, FinalTile = sender.Position }; // Try to move and update the final position MoveEffect effect = map.CheckForMoveEffects(sender.Position, moveRequest.DesiredTile); if (effect != MoveEffect.InvalidMove) { logger.LogMove(sender.Rank, true, sender.Position, moveRequest.DesiredTile); switch (effect) { case MoveEffect.RatCaptured: ActorProcess rat = GetActorProcessByCoordinates(moveRequest.DesiredTile); logger.LogCaptureRat(rat.Rank, sender.Rank); HandleRatRemoval(rat); break; case MoveEffect.RatEscaped: logger.LogExitRat(sender.Rank, moveRequest.DesiredTile); HandleRatRemoval(GetActorProcessByCoordinates(sender.Position)); break; case MoveEffect.CheeseEaten: logger.LogCheeseConsumption(sender.Rank, moveRequest.DesiredTile); break; } // Move is valid and the destination tile no longer has important information map.ApplyMove(sender.Position, moveRequest.DesiredTile); sender.Position = moveRequest.DesiredTile; moveSignal.FinalTile = moveRequest.DesiredTile; } else { logger.LogMove(sender.Rank, false, sender.Position, moveRequest.DesiredTile); } moveCount++; if (moveCount % MAP_LOG_INTERVAL == 0) { logger.LogMap(map.ToString()); } if (IsGameOver()) { EndGame(); } else { // Broadcast the result of the move Broadcast(moveSignal); } }
public void DoMove(int moveId) { Debug.Log("Called to do move" + moveId); MoveEffect effect = (MoveEffect)GameObject.Find("Player").GetComponent <PlayerData>().PlayerMoves[moveId].GetComponent(typeof(MoveEffect)); effect.UseEffect(); DealDamage(); playerTurn = false; StartCoroutine(HitEnemy()); }
public void testMoveEffect() { UISceneDZ uiDZ = Ctx.m_instance.m_uiSceneMgr.getSceneUI <UISceneDZ>(UISceneFormID.eUISceneDZ); MoveEffect effect = Ctx.m_instance.m_sceneEffectMgr.createAndAdd(EffectType.eMoveEffect, EffectRenderType.eSpriteEffectRender) as MoveEffect; effect.setPnt(uiDZ.m_sceneDZData.m_placeHolderGo.m_centerGO); effect.setLoop(false); effect.setTableID(4); effect.srcPos = new Vector3(-4, 0, 0); effect.destPos = new Vector3(4, 0, 0); effect.effectMoveTime = 5; effect.play(); }
public override IEnumerator Initialize() { yield return(new WaitForSeconds(0)); initialized = true; if (spikeManager != null) { transform.position = spikeManager.transform.position + new Vector3(0, 2, 0); colorEffect = new ColorChangeEffect(textCollider2D, textCollider2D.Color, new Color(textCollider2D.Color.r, textCollider2D.Color.g, textCollider2D.Color.b, 1), 2); EffectManager.AddGameEffect(colorEffect); moveEffect = new MoveEffect(textCollider2D, spikeManager.transform.position, 2, true); EffectManager.AddGameEffect(moveEffect); } }
// Clone public static MoveEffect Clone(MoveEffect original) { MoveEffect cloneEffect = new MoveEffect( effectType: original.effectType, effectTiming: original.effectTiming, effectTargetType: original.effectTargetType, effectFilters: original.effectFilters, effectChance: original.effectChance, forceEffectDisplay: original.forceEffectDisplay, boolParams: original.boolParams, floatParams: original.floatParams, stringParams: original.stringParams, sheerForceEffect: original.sheerForceEffect ); return(cloneEffect); }
private void PerformMoveEffect(MoveEffect effect, KeyType type, int keyEffect, int moveEffect) { if (!effect.movingRB || effect.onCoolDown) { return; } // Must the mech be grounded to perform this effect if (effect.mustBeGrounded) { // Skip iteration if nothing is hit by box cast RaycastHit2D hit = CheckOnGround(effect.groundCheckParams); if (!hit.collider) { return; } } // Use energy if (partUsesEnergy) { energy.UseEnergy(effect.energyUsage); } // Perform cool down if (effect.coolDown > 0f && !effect.onCoolDown) { StartCoroutine(MoveEffectCoolDownTime(type, keyEffect, moveEffect)); } // Play moving animation for (int i = 0; i < effect.animationParameters.Length; i++) { StartCoroutine(PlayAnimation(effect.animationParameters[i])); } // Delay effect for specified amount of time if (effect.effectDelay > 0) { StartCoroutine(WaitForMoveDelay(effect)); return; } MoveRB(effect); }
private void SelectSwitch(object sender, EventArgs e) { if (eff == null) { eff = new MoveEffect(); eff.AddControl(S1); eff.AddControl(S2); } if (!eff.isIdle()) { return; } int id = int.Parse((string)(((Control)sender).Tag)); if (id != lastselectid) { lastselectid = id; if (id == 1) { eff.Move(-400, 0); if (ConfigListSelect.Items.Count == 0) { ConfigListSelect.Text = "新配置1"; } else { if (ConfigSelect.SelectedIndex != -1) { ConfigListSelect.SelectedIndex = ConfigSelect.SelectedIndex; } } } else { eff.Move(400, 0); } Color c = bt1.BackColor; bt1.BackColor = bt0.BackColor; bt0.BackColor = c; } }
public void updateMoveY(string d) { if (d.Length > 0) { Effect e; currentEvent.getEffect(currentEffectIndex, out e); switch (e.getEffectType()) { case EffectTypes.moveUnit: MoveEffect moveEffect = (MoveEffect)e; moveEffect.setY(int.Parse(d)); break; case EffectTypes.enemySpawn: EnemyEffect enemyEffect = (EnemyEffect)e; enemyEffect.setY(int.Parse(d)); break; } } }
public override Effect GetEffect(EffectMakerPerspective perspective, bool buff) { if (perspective.Phase == Phase.StartOfGame && perspective.Card.Zone == Zone.PutOff) { return(new StartInDeckEffect()); } if (state == 0 && perspective.IsPlayed() && !buff) { ++state; return(new AttackEffect(5)); } if (state == 1 && perspective.IsPlayed() && !buff) { ++state; moveEffect = new MoveRandomEffect(Zone.Deck, Zone.Pile); return(moveEffect); } if (state == 2) { if (stolenMaker == null && moveEffect.Moved != null) { stolenMaker = moveEffect.Moved.Type.Effects(); } if (perspective.IsEnded()) { state = 0; moveEffect = null; stolenMaker = null; return(new EndEffect()); } if (perspective.IsPlayed() && stolenMaker != null) { return(stolenMaker.GetEffect(perspective, buff)); } } return(null); }
public MoveEffect(MoveEffect other) : base(other) { this.Direction = other.Direction; this.UseBezier = other.useBezier; }
public Move(string name, MoveEffect effect) { _name = name; _effect = effect; }
IEnumerator WaitForMoveDelay(MoveEffect effect) { yield return(new WaitForSeconds(effect.effectDelay)); MoveRB(effect); }
public void showEffect(int i) { if (currentEffectPanel != null) { currentEffectPanel.SetActive(false); } Vector2 pos; switch ((EffectTypes)i) { case EffectTypes.test: TestEffect effect = (TestEffect)currentEvent.getEffects()[currentEffectIndex]; currentEffectPanel = transform.FindChild("testPanel").gameObject; currentEffectPanel.SetActive(true); currentEffectPanel.transform.FindChild("InputField").GetComponent <InputField>().text = ""; print(effect.getData()); currentEffectPanel.transform.FindChild("InputField").GetChild(1).GetComponent <Text>().text = effect.getData(); break; case EffectTypes.moveUnit: MoveEffect moveEffect = (MoveEffect)currentEvent.getEffects()[currentEffectIndex]; currentEffectPanel = transform.FindChild("moveUnitPanel").gameObject; currentEffectPanel.SetActive(true); currentEffectPanel.transform.FindChild("XField").GetComponent <InputField>().text = ""; currentEffectPanel.transform.FindChild("YField").GetComponent <InputField>().text = ""; pos = moveEffect.getPosition(); currentEffectPanel.transform.FindChild("XField").GetChild(1).GetComponent <Text>().text = pos.x.ToString(); currentEffectPanel.transform.FindChild("YField").GetChild(1).GetComponent <Text>().text = pos.y.ToString(); break; case EffectTypes.enemySpawn: EnemyEffect enemyEffect = (EnemyEffect)currentEvent.getEffects()[currentEffectIndex]; currentEffectPanel = transform.FindChild("EnemyPanel").gameObject; currentEffectPanel.SetActive(true); currentEffectPanel.transform.FindChild("XField").GetComponent <InputField>().text = ""; currentEffectPanel.transform.FindChild("YField").GetComponent <InputField>().text = ""; currentEffectPanel.transform.FindChild("UnitIndex").GetComponent <InputField>().text = ""; pos = enemyEffect.getPosition(); currentEffectPanel.transform.FindChild("XField").GetChild(1).GetComponent <Text>().text = pos.x.ToString(); currentEffectPanel.transform.FindChild("YField").GetChild(1).GetComponent <Text>().text = pos.y.ToString(); currentEffectPanel.transform.FindChild("UnitIndex").GetChild(1).GetComponent <Text>().text = enemyEffect.getIndex().ToString(); break; case EffectTypes.enemyConversion: ConversationEffect conEffect = (ConversationEffect)currentEvent.getEffects()[currentEffectIndex]; currentEffectPanel = transform.FindChild("conversationPanel").gameObject; currentEffectPanel.SetActive(true); currentEffectPanel.transform.FindChild("InputField").GetComponent <InputField>().text = ""; print(conEffect.getData()); currentEffectPanel.transform.FindChild("InputField").GetChild(1).GetComponent <Text>().text = conEffect.getData(); break; case EffectTypes.noEffect: currentEffectPanel = null; break; } }
// 添加移动特效 public MoveEffect addMoveEffect(int id, Vector3 srcPos, Vector3 destPos, float moveTime, bool bAutoRemove = true, bool bLoop = false, bool bPlay = true) { MoveEffect effect = Ctx.m_instance.m_sceneEffectMgr.addMoveEffect(id, m_card.m_sceneDZData.m_placeHolderGo.m_centerGO, srcPos, destPos, moveTime, bAutoRemove, bLoop, bPlay) as MoveEffect; return(effect); }
// TODO: Contest Stats / Effects // Constructor public MoveData( string ID, string baseID = null, string moveName = null, string moveType = "", bool useSameCategory = false, MoveCategory category = MoveCategory.Status, bool useSameTargetType = false, MoveTargetType targetType = MoveTargetType.Self, bool useSameBasePower = false, bool useSameAccuracy = false, bool useSamePP = false, int basePower = 0, float accuracy = -1, int PP = 5, bool useSamePriority = false, int priority = 0, bool combineBaseTags = false, IEnumerable <MoveTag> moveTags = null, MoveEffect[] moveEffects = null, bool combineBaseEffects = false, EffectDatabase.MoveEff.MoveEffect[] effectsNew = null, int ZBasePower = 0, EffectDatabase.MoveEff.MoveEffect[] ZEffectsNew = null, int MaxPower = 0) { this.ID = ID; this.baseID = baseID; this.moveName = moveName; this.moveType = moveType; this.useSameCategory = useSameCategory; this.category = category; this.useSameTargetType = useSameTargetType; this.targetType = targetType; this.useSameBasePower = useSameBasePower; this.basePower = basePower; this.useSameAccuracy = useSameAccuracy; this.accuracy = accuracy; this.useSamePP = useSamePP; this.PP = PP; this.useSamePriority = useSamePriority; this.priority = priority; this.combineBaseTags = combineBaseTags; this.moveTags = new HashSet <MoveTag>(); if (moveTags != null) { this.moveTags.UnionWith(moveTags); } this.moveEffects = new List <MoveEffect>(); if (moveEffects != null) { for (int i = 0; i < moveEffects.Length; i++) { this.moveEffects.Add(MoveEffect.Clone(moveEffects[i])); } } this.combineBaseEffects = combineBaseEffects; this.effectsNew = new List <EffectDatabase.MoveEff.MoveEffect>(); if (effectsNew != null) { List <EffectDatabase.MoveEff.MoveEffect> addableEffects = new List <EffectDatabase.MoveEff.MoveEffect>(); for (int i = 0; i < effectsNew.Length; i++) { addableEffects.Add(effectsNew[i].Clone()); } this.effectsNew = addableEffects; } this.ZBasePower = ZBasePower; this.ZEffectsNew = new List <EffectDatabase.MoveEff.MoveEffect>(); if (ZEffectsNew != null) { List <EffectDatabase.MoveEff.MoveEffect> addableEffects = new List <EffectDatabase.MoveEff.MoveEffect>(); for (int i = 0; i < ZEffectsNew.Length; i++) { addableEffects.Add(ZEffectsNew[i].Clone()); } this.ZEffectsNew = addableEffects; } this.MaxPower = MaxPower; }