Пример #1
0
    // ------------------------------------------------------------------
    Member CreateNewMember(int iIndex)
    {
        bool bLight = false;

        foreach (Member ItorMember in DataPlayer.pthis.MemberParty)
        {
            DBFEquip Data = GameDBF.GetEquip(ItorMember.iEquip) as DBFEquip;

            if (Data != null && Data.Mode == (int)ENUM_ModeEquip.Light)
            {
                bLight = true;
            }
        }        //for

        Member ptempMember = new Member();

        // 角色外觀.
        ptempMember.iLooks = Rule.RandomMemberLooks();
        // 裝備.
        ptempMember.iEquip = Rule.RandomEquipParty(bLight == false, 0);
        // 角色反應時間.
        ptempMember.fReactTime = Random.Range(0.00f, 0.20f);

        pObjRoleChild[iIndex] = P_AddMember.pthis.CreateRole(pObjRole[iIndex], ptempMember);

        return(ptempMember);
    }
Пример #2
0
    public void SetInfo(int iID)
    {
        for (int i = 0; i < pFInfo.Length; i++)
        {
            pFInfo[i].SetInfo(i, iID);
        }

        if ((ENUM_Weapon)DataPlayer.pthis.MemberParty[iID].iEquip != ENUM_Weapon.Null)
        {
            ObjWeapon = UITool.pthis.CreateUI(S_Weapon, "Prefab/Weapon/" + (ENUM_Weapon)DataPlayer.pthis.MemberParty[iID].iEquip);
            ObjWeapon.transform.localPosition = new Vector3(-20, 0, 0);
            SpriteRenderer[] p2DS = ObjWeapon.GetComponentsInChildren <SpriteRenderer>();

            foreach (SpriteRenderer pRender in p2DS)
            {
                ToolKit.ChangeTo2DSprite(pRender);
            }

            DBFEquip      pDBFEquip  = GameDBF.GetEquip(DataPlayer.pthis.MemberParty[iID].iEquip) as DBFEquip;
            ENUM_Resource emResource = (ENUM_Resource)pDBFEquip.Resource;

            if (System.Convert.ToInt32(pDBFEquip.GUID) == (int)ENUM_Weapon.LMG && Rule.GetWeaponLevel(ENUM_Weapon.LMG) > 0)
            {
                emResource = ENUM_Resource.Battery;
            }

            if (emResource != ENUM_Resource.Null)
            {
                ObjBullet = UITool.pthis.CreateUI(S_Bullet, "Prefab/Item/G_" + (ENUM_Resource)pDBFEquip.Resource);
                ObjBullet.GetComponent <Collider2D>().enabled = false;
                p2DS = ObjBullet.GetComponentsInChildren <SpriteRenderer>();

                foreach (SpriteRenderer pRender in p2DS)
                {
                    ToolKit.ChangeTo2DSprite(pRender);
                }
            }            //if
        }

        if ((ENUM_Weapon)DataPlayer.pthis.MemberParty[iID].iEquip == ENUM_Weapon.Light || (ENUM_Weapon)DataPlayer.pthis.MemberParty[iID].iEquip == ENUM_Weapon.Null)
        {
            // 攻擊力.
            Lb_Value[0].text = "--";
            // 射擊速度.
            Lb_Value[1].text = "--";
            // 爆擊.
            Lb_Value[2].text = "--";
        }
        else
        {
            DBFEquip pDBFEquip = GameDBF.GetEquip(DataPlayer.pthis.MemberParty[iID].iEquip) as DBFEquip;

            // 攻擊力
            {
                int    iEquip   = pDBFEquip.Damage;
                int    iAddon   = DataPlayer.pthis.MemberParty[iID].iAddDamage;
                int    iUpgrade = DataPlayer.pthis.MemberParty[iID].iLiveStage * GameDefine.iDamageUpgrade + DataPlayer.pthis.iDamageLv;
                string szResult = string.Format("[ffed00]{0}[-]", Mathf.Max(0, iEquip + iAddon + iUpgrade));
                string szExtra  = "";

                if (iAddon != 0)
                {
                    szExtra += iAddon > 0 ? string.Format("[546ef2]+{0}[-]", iAddon) : string.Format("[e92121]{0}[-]", iAddon);
                }

                if (iUpgrade != 0)
                {
                    szExtra += iUpgrade > 0 ? string.Format("[00ff00]+{0}[-]", iUpgrade) : string.Format("[e92121]{0}[-]", iUpgrade);
                }

                if (szExtra.Length > 0)
                {
                    szResult += string.Format("({0}{1})", iEquip, szExtra);
                }

                Lb_Value[0].text = szResult;
            }

            // 射擊速度
            Lb_Value[1].text = string.Format("[ffed00]{0:0.0}[-] per sec", 1 / (System.Convert.ToInt32(pDBFEquip.GUID) == (int)ENUM_Weapon.Knife && Rule.GetWeaponLevel(ENUM_Weapon.Knife) > 0 ? Rule.UpgradeWeaponKnife() : pDBFEquip.FireRate));

            // 爆擊
            {
                int    iEquip = (int)(pDBFEquip.CriticalStrike * 100);
                int    iAddon = (int)(DataPlayer.pthis.MemberParty[iID].fCriticalStrike * 100);
                string szTemp = string.Format("[ffed00]{0}[-]", Mathf.Max(0, iEquip + iAddon));

                if (iAddon != 0)
                {
                    if (iAddon > 0)
                    {
                        szTemp += string.Format("({0}[546ef2]+{1}[-])", iEquip, iAddon);
                    }
                    else
                    {
                        szTemp += string.Format("({0}[e92121]{1}[-])", iEquip, iAddon);
                    }
                }                //if

                Lb_Value[2].text = szTemp + "%";
            }
        }
    }
Пример #3
0
    // 建立拾取
    public void Create()
    {
        DataPickup.pthis.Data.Clear();

        // 檢查隊伍裡是否沒有光源裝備
        bool bLight = false;

        foreach (Member ItorMember in DataPlayer.pthis.MemberParty)
        {
            DBFEquip Data = GameDBF.GetEquip(ItorMember.iEquip) as DBFEquip;

            if (Data == null)
            {
                continue;
            }

            if (Data.Mode == (int)ENUM_ModeEquip.Light)
            {
                bLight = true;
            }
        }        //for

        // 成員拾取
        if (DataPlayer.pthis.MemberParty.Count < GameDefine.iMaxMemberParty)
        {
            if (bLight == false || Random.Range(0, 100) <= (GameDefine.iMaxMemberParty - DataPlayer.pthis.MemberParty.Count) * GameDefine.iPickupMember)
            {
                Pickup Data = new Pickup();

                Data.Pos     = NextPickup();
                Data.iType   = (int)ENUM_Pickup.Member;
                Data.iCount  = 1;
                Data.iLooks  = Rule.RandomMemberLooks();
                Data.bPickup = false;

                DataPickup.pthis.Data.Add(Data);
            }    //if
        }        //if

        // 總物品拾取次數
        int iPickupLightAmmo = (int)(GameDefine.iPickupItems * GameDefine.fPickupPartLightAmmo);
        int iPickupHeavyAmmo = (int)(GameDefine.iPickupItems * GameDefine.fPickupPartHeavyAmmo);
        int iPickupBattery   = (int)(GameDefine.iPickupItems * GameDefine.fPickupPartBattery);
        int iPickupCurrency  = GameDefine.iPickupItems - iPickupLightAmmo - iPickupHeavyAmmo - iPickupBattery;
        // 額外拾取價值
        int iExteraValue = (int)(DataPlayer.pthis.iStage * GameDefine.fUpgradePickup);

        // 輕型彈藥拾取
        for (int iCount = 0; iCount < iPickupLightAmmo; ++iCount)
        {
            Pickup Data = new Pickup();

            Data.Pos     = NextPickup();
            Data.iType   = (int)ENUM_Pickup.LightAmmo;
            Data.iCount  = (GameDefine.iPickupValue + iExteraValue) / GameDefine.iPriceLightAmmo;
            Data.iLooks  = 0;
            Data.bPickup = false;

            DataPickup.pthis.Data.Add(Data);
        }        //for

        // 重型彈藥拾取
        for (int iCount = 0; iCount < iPickupHeavyAmmo; ++iCount)
        {
            Pickup Data = new Pickup();

            Data.Pos     = NextPickup();
            Data.iType   = (int)ENUM_Pickup.HeavyAmmo;
            Data.iCount  = (GameDefine.iPickupValue + iExteraValue) / GameDefine.iPriceHeavyAmmo;
            Data.iLooks  = 0;
            Data.bPickup = false;

            DataPickup.pthis.Data.Add(Data);
        }        //for

        // 電池拾取
        for (int iCount = 0; iCount < iPickupBattery; ++iCount)
        {
            Pickup Data = new Pickup();

            Data.Pos     = NextPickup();
            Data.iType   = (int)ENUM_Pickup.Battery;
            Data.iCount  = (GameDefine.iPickupValue + iExteraValue) / GameDefine.iPriceBattery;
            Data.iLooks  = 0;
            Data.bPickup = false;

            DataPickup.pthis.Data.Add(Data);
        }        //for

        // 通貨拾取
        for (int iCount = 0; iCount < iPickupCurrency; ++iCount)
        {
            Pickup Data = new Pickup();

            Data.Pos     = NextPickup();
            Data.iType   = (int)ENUM_Pickup.Currency;
            Data.iCount  = GameDefine.iPickupValue + iExteraValue;
            Data.iLooks  = 0;
            Data.bPickup = false;

            DataPickup.pthis.Data.Add(Data);
        }        //for

        // 絕招拾取
        if (Random.Range(0, 100) <= GameDefine.iPickupProbBomb)
        {
            Pickup Data = new Pickup();

            Data.Pos     = NextPickup();
            Data.iType   = (int)ENUM_Pickup.Bomb;
            Data.iCount  = 1;
            Data.iLooks  = 0;
            Data.bPickup = false;

            DataPickup.pthis.Data.Add(Data);
        }        //if

        // 水晶拾取
        if (DataPlayer.pthis.iStage >= GameDefine.iCrystalStage)
        {
            Pickup Data = new Pickup();

            Data.Pos     = NextPickup();
            Data.iType   = (int)ENUM_Pickup.Crystal;
            Data.iCount  = Rule.AppearBossStage() ? GameDefine.iCrystalBoss : GameDefine.iCrystalNormal;
            Data.iLooks  = 0;
            Data.bPickup = false;

            DataPickup.pthis.Data.Add(Data);
        }        //if
    }
Пример #4
0
    // ------------------------------------------------------------------
    public bool UseBullet(ENUM_Weapon pType)
    {
        DBFEquip DataEquip = GameDBF.GetEquip((int)pType) as DBFEquip;

        if (DataEquip == null)
        {
            return(false);
        }

        ENUM_Resource emResource = (ENUM_Resource)DataEquip.Resource;

        // 輕機槍升級後不再消耗子彈,改為消耗電力.
        if (pType == ENUM_Weapon.LMG && Rule.GetWeaponLevel(ENUM_Weapon.LMG) > 0)
        {
            emResource = ENUM_Resource.Battery;
        }

        bool bResult = false;

        switch (emResource)
        {
        case ENUM_Resource.Null:
            bResult = true;
            break;

        case ENUM_Resource.Battery:
        {
            if (Rule.BatteryChk(1))
            {
                Rule.BatteryAdd(-1);
                bResult = true;
            }                    //if
        }
        break;

        case ENUM_Resource.LightAmmo:
        {
            if (Rule.LightAmmoChk(1))
            {
                Rule.LightAmmoAdd(-1);
                bResult = true;
            }                    //if
        }
        break;

        case ENUM_Resource.HeavyAmmo:
        {
            if (Rule.HeavyAmmoChk(1))
            {
                Rule.HeavyAmmoAdd(-1);
                bResult = true;
            }                    //if
        }
        break;

        default:
            break;
        }        //switch

        if (bResult)
        {
            UpdateResource();
        }

        return(bResult);
    }