示例#1
0
 public void FromPrefabs(CharacterEditorData.CharacterEditorStateData editStateDt)
 {
     this.animation_name = editStateDt.m_animationName;
     this.total_frame    = editStateDt.m_totFrame;
     foreach (CharacterEditorData.CharacterEditorBombAttackData item in editStateDt.m_attackBmDatas)
     {
         int            frame = item.m_iFrame;
         AttackBombData pData = (AttackBombData)AttackBaseData.CreateInstance(item.m_attackType);
         pData.damage         = item.m_damage;
         pData.center_damage  = item.m_centerDamage;
         pData.bomb_config_id = item.m_bombCofigID;
         AttackData[frame]    = pData;
     }
     foreach (CharacterEditorData.CharacterEditorNormalAttackData item in editStateDt.m_attackNmDatas)
     {
         int frame = item.m_iFrame;
         AttackNormalData pData = (AttackNormalData)AttackBaseData.CreateInstance(item.m_attackType);
         AttackData[frame] = pData;
     }
 }
示例#2
0
    public override void OnInspectorGUI()
    {
        if (m_chaEditData == null)
        {
            PrintLog("the chaEditorData is null");
            return;
        }
        m_chaEditData.m_id              = EditorGUILayout.IntField("PlayerID: ", m_chaEditData.m_id);
        m_chaEditData.m_resID           = EditorGUILayout.IntField("PlayerResourceID:", m_chaEditData.m_resID);
        m_chaEditData.m_defaultName     = EditorGUILayout.TextField("PlayerDefaultName: ", m_chaEditData.m_defaultName);
        m_chaEditData.m_scale           = EditorGUILayout.FloatField("PlayerScale:", m_chaEditData.m_scale);
        m_chaEditData.m_walkSpeedX      = EditorGUILayout.IntField("PlayerXSpeed: ", m_chaEditData.m_walkSpeedX);
        m_chaEditData.m_walkSpeedY      = EditorGUILayout.IntField("PlayerYSpeed:", m_chaEditData.m_walkSpeedY);
        m_chaEditData.m_hatred          = EditorGUILayout.FloatField("PlayerHatred:", m_chaEditData.m_hatred);
        m_chaEditData.m_lowFireAngle    = EditorGUILayout.FloatField("PlayerLowFireAngle:", m_chaEditData.m_lowFireAngle);
        m_chaEditData.m_higFireAngle    = EditorGUILayout.FloatField("PlayerHigFireAngle:", m_chaEditData.m_higFireAngle);
        m_chaEditData.m_fireRange       = EditorGUILayout.IntField("PlayerFireRange:", m_chaEditData.m_fireRange);
        m_chaEditData.m_weaponPosition  = EditorGUILayout.Vector2Field("PlayerWeaponPos", m_chaEditData.m_weaponPosition);
        m_chaEditData.m_beAttackBoxMinX = EditorGUILayout.IntField("PlayerBAtkBoxMinX:", m_chaEditData.m_beAttackBoxMinX);
        m_chaEditData.m_beAttackBoxMinY = EditorGUILayout.IntField("PlayerBAtkBoxMinY:", m_chaEditData.m_beAttackBoxMinY);
        m_chaEditData.m_beAttackBoxMaxX = EditorGUILayout.IntField("PlayerBAtkBoxMaxX:", m_chaEditData.m_beAttackBoxMaxX);
        m_chaEditData.m_beAttackBoxMaxY = EditorGUILayout.IntField("PlayerBAtkBoxMaxY:", m_chaEditData.m_beAttackBoxMaxY);
        if (GUILayout.Button("Add New State"))
        {
            if (m_chaEditData.IsAllStateExist())
            {
                m_addState = AddState.FULLSTATE;
            }
            else
            {
                m_addState = AddState.NEWSTATE;
            }
        }
        EditorGUILayout.Space();
        if (m_addState == AddState.FULLSTATE)
        {
            EditorGUILayout.LabelField("all states is used");
        }
        else if (m_addState == AddState.NEWSTATE)
        {
            CharacterStateType newestState = m_chaEditData.GetNewestState();
            m_chaEditData.AddNewState(newestState);
            m_addState = AddState.NONE;
        }

        EditorGUILayout.Space();
        ///Debug.Log("yes");
        for (int index = 0; index < m_chaEditData.m_lsStates.Count; index++)
        {
            CharacterEditorData.CharacterEditorStateData chaState = m_chaEditData.m_lsStates[index];
            //Debug.Log(EditorGUILayout.EnumPopup("state:", chaState.m_newState));
            CharacterStateType state = (CharacterStateType)EditorGUILayout.EnumPopup("state:", chaState.m_stateType);
            m_chaEditData.ChangeByState(chaState, state);
            chaState.m_animationName = EditorGUILayout.TextField("AnimationName:", chaState.m_animationName);
            int totFrame = EditorGUILayout.IntField("TotalFrame:", chaState.m_totFrame);
            if (totFrame != chaState.m_totFrame)
            {
                chaState.m_totFrame = totFrame;
                chaState.UpdateFramesSz();
            }
            if (chaState.m_stateType == CharacterStateType.ATTACK)
            {
                if (GUILayout.Button("Add Frame Data", GUILayout.MaxWidth(130), GUILayout.MaxHeight(20)))
                {
                    int newFrame = chaState.GetNewFrame();
                    //Debug.Log(newFrame);
                    if (newFrame != -1)
                    {
                        chaState.AddFrameData(newFrame);
                    }
                }
                EditorGUILayout.Space();
                for (int i = 0; i < chaState.m_attackDatas.Count; i++)
                {
                    CharacterEditorData.CharacterEditorAttackData frameData = chaState.m_attackDatas[i];
                    int frame = EditorGUILayout.IntField("Frame:", frameData.m_iFrame);
                    if (chaState.IsLegalFrame(frame))
                    {
                        //Debug.Log(frame);
                        frameData.m_iFrame = frame;
                    }
                    CharacterAttackType attackType = (CharacterAttackType)EditorGUILayout.EnumPopup("AttackType:", frameData.m_attackType);
                    chaState.ChangeFrameData(i, attackType);
                    EditorGUILayout.Space();
                    if (frameData.m_attackType == CharacterAttackType.BOMB)
                    {
                        CharacterEditorData.CharacterEditorBombAttackData bomb = (CharacterEditorData.CharacterEditorBombAttackData)frameData;
                        bomb.m_bombCofigID  = EditorGUILayout.IntField("BombConfigID:", bomb.m_bombCofigID);
                        bomb.m_damage       = EditorGUILayout.IntField("Damge:", bomb.m_damage);
                        bomb.m_centerDamage = EditorGUILayout.IntField("CenterDamage:", bomb.m_centerDamage);
                    }
                    if (GUILayout.Button("Remove this Frame"))
                    {
                        chaState.RemoveFrameData(frameData.m_iFrame);
                    }
                    EditorGUILayout.Space();
                    EditorGUILayout.Space();
                }
            }
            if (GUILayout.Button("remove this state"))
            {
                m_chaEditData.RemoveOldState(index);
            }
            EditorGUILayout.Space();
            EditorGUILayout.Space();
        }
        EditorUtility.SetDirty(m_chaEditData);
    }