public override void Update(IM.Number fDeltaTime) { base.Update(fDeltaTime); if (m_player.m_defenseTarget != null) { if (m_player.m_AOD.GetStateByPos(m_player.m_defenseTarget.position) != AOD.Zone.eInvalid) { bool crossed = false; if (m_player.m_defenseTarget.moveDirection != IM.Vector3.zero) { IM.Number angle = IM.Vector3.FromToAngle(dirToBasket, m_player.m_defenseTarget.moveDirection); if (new IM.Number(45) < angle && angle < new IM.Number(135) && isTurnLeft) { crossed = true; } else if (new IM.Number(225) < angle && angle < new IM.Number(315) && !isTurnLeft) { crossed = true; } } if (crossed) { PlayerState_Crossed state = m_player.m_defenseTarget.m_StateMachine.GetState(PlayerState.State.eCrossed) as PlayerState_Crossed; state.left = !isTurnLeft; state.m_animType = state.left ? AnimType.N_TYPE_0 : AnimType.N_TYPE_1; m_player.m_defenseTarget.m_StateMachine.SetState(state); } } } }
static int OnEnter(IntPtr L) { LuaScriptMgr.CheckArgsCount(L, 2); PlayerState_Crossed obj = (PlayerState_Crossed)LuaScriptMgr.GetNetObjectSelf(L, 1, "PlayerState_Crossed"); PlayerState arg0 = (PlayerState)LuaScriptMgr.GetNetObject(L, 2, typeof(PlayerState)); obj.OnEnter(arg0); return(0); }
static int _CreatePlayerState_Crossed(IntPtr L) { int count = LuaDLL.lua_gettop(L); if (count == 2) { PlayerStateMachine arg0 = (PlayerStateMachine)LuaScriptMgr.GetNetObject(L, 1, typeof(PlayerStateMachine)); GameMatch arg1 = (GameMatch)LuaScriptMgr.GetNetObject(L, 2, typeof(GameMatch)); PlayerState_Crossed obj = new PlayerState_Crossed(arg0, arg1); LuaScriptMgr.PushObject(L, obj); return(1); } else { LuaDLL.luaL_error(L, "invalid arguments to method: PlayerState_Crossed.New"); } return(0); }
static int set_left(IntPtr L) { object o = LuaScriptMgr.GetLuaObject(L, 1); PlayerState_Crossed obj = (PlayerState_Crossed)o; if (obj == null) { LuaTypes types = LuaDLL.lua_type(L, 1); if (types == LuaTypes.LUA_TTABLE) { LuaDLL.luaL_error(L, "unknown member name left"); } else { LuaDLL.luaL_error(L, "attempt to index left on a nil value"); } } obj.left = LuaScriptMgr.GetBoolean(L, 3); return(0); }
public override void Update(IM.Number fDeltaTime) { base.Update(fDeltaTime); m_player.m_blockable.Update(m_time); if (m_player.m_blockable.tooEarly) { return; } if (!m_bDefenderOp) { Player defender = m_player.m_defenseTarget; if (m_player.m_blockable.blockable && !m_bChecked) { if (_ValidDefender(defender) && defender.m_curInputDir != -1) { IM.Vector3 vDefenderDir = IM.Quaternion.Euler(IM.Number.zero, defender.m_curInputDir * MoveController.ANGLE_PER_DIR, IM.Number.zero) * IM.Vector3.forward; IM.Number fAngleToDir = IM.Vector3.Angle(vDefenderDir, m_crossDir == CrossDir.Left ?m_player.right : -m_player.right); bool bMiss = fAngleToDir < new IM.Number(90); if (bMiss) { PlayerState_Crossed state = defender.m_StateMachine.GetState(State.eCrossed) as PlayerState_Crossed; state.left = (m_crossDir == CrossDir.Right); state.m_animType = state.left ? AnimType.N_TYPE_0 : AnimType.N_TYPE_1; defender.m_StateMachine.SetState(state); ++m_player.mStatistics.data.success_cross_times; m_player.mStatistics.SkillUsageSuccess(m_curExecSkill.skill.id, true); m_bDefenderOp = true; } else if (m_match.AdjustCrossRate(m_player, defender, IM.Number.zero) != IM.Number.one) { if (fAngleToDir > new IM.Number(90)) { _DoDefenseCross(defender); Debug.Log("match defense cross."); } } m_bChecked = true; } } else { Debug.Log("match defense cross not in blockable range."); } if (m_crossDir != CrossDir.None && m_player.m_blockable.tooLate) { if (_ValidDefender(defender)) { IM.Number crossRate = CalcCrossRate(m_player, defender); crossRate = m_match.AdjustCrossRate(m_player, defender, crossRate); IM.Number crossValue = IM.Random.value; crossed = crossValue < crossRate; m_bDefenderOp = true; Debugger.Instance.m_steamer.message = "Cross succeed: " + crossed + " Rate: " + crossRate + " Value: " + crossValue; //should use sendmessage if (crossed) { PlayerState_Crossed state = defender.m_StateMachine.GetState(State.eCrossed) as PlayerState_Crossed; state.left = (m_crossDir == CrossDir.Right); state.m_animType = state.left ? AnimType.N_TYPE_0 : AnimType.N_TYPE_1; defender.m_StateMachine.SetState(state); ++m_player.mStatistics.data.success_cross_times; m_player.mStatistics.SkillUsageSuccess(m_curExecSkill.skill.id, true); } //else // _DoDefenseCross(defender); } } } }