コード例 #1
0
//	public static PeEntity CreateNetRandTerDoodadWithPlayerId(int entityId, int protoId, Vector3 pos, Vector3 scl, Quaternion rot, int townId = -1, int campId = SceneDoodadDesc.c_neutralCamp, int damageId = SceneDoodadDesc.c_neutralDamage,int playerId = -1)
//	{
//		return CreateDoodad(true, new AgentInfo(townId, true, campId, damageId), protoId, pos, scl, rot, entityId);
//	}
    public static PeEntity CreateStoryDoodadNet(int assetId, int entityId)
    {
        SceneDoodadDesc doodad = StoryDoodadMap.Get(assetId);

        if (null == doodad)
        {
            return(null);
        }
        AgentInfo spInfo = new AgentInfo(doodad._id, doodad._isShown, doodad._campId, doodad._damageId);

        return(CreateDoodad(true, spInfo, doodad._protoId, doodad._pos, doodad._scl, doodad._rot, entityId));;
    }
コード例 #2
0
    public static void LoadData()
    {
        SqliteDataReader reader = LocalDatabase.Instance.ReadFullTable("sceneAssetList");
        int idxId        = reader.GetOrdinal("ID");
        int idxType      = reader.GetOrdinal("type");
        int idxShown     = reader.GetOrdinal("IsProduce");
        int idxDamagable = reader.GetOrdinal("IsDamage");
        int idxProtoId   = reader.GetOrdinal("PrototypeDoodad_Id");
        int idxPos       = reader.GetOrdinal("PosXYZ");
        int idxRot       = reader.GetOrdinal("RotXYZW");
        int idxScl       = reader.GetOrdinal("ScaleXYZ");

        while (reader.Read())
        {
            SceneDoodadDesc desc = new SceneDoodadDesc();
            desc._id      = reader.GetInt32(idxId);
            desc._type    = reader.GetInt32(idxType);           // save or not
            desc._protoId = reader.GetInt32(idxProtoId);
            desc._isShown = 0 != reader.GetInt32(idxShown);
            SceneDoodadDesc.GetCampDamageId(0 != reader.GetInt32(idxDamagable), out desc._campId, out desc._damageId);
            string[] strPos = reader.GetString(idxPos).Split(',');
            string[] strRot = reader.GetString(idxRot).Split(',');
            string[] strScl = reader.GetString(idxScl).Split(',');
            desc._pos = new Vector3(
                Convert.ToSingle(strPos[0]),
                Convert.ToSingle(strPos[1]),
                Convert.ToSingle(strPos[2]));
            desc._rot = new Quaternion(
                Convert.ToSingle(strRot[0]),
                Convert.ToSingle(strRot[1]),
                Convert.ToSingle(strRot[2]),
                Convert.ToSingle(strRot[3]));
            if (desc._rot.w > 2)            //Quaternion should be normalized
            {
                desc._rot.eulerAngles = new Vector3(desc._rot.x, desc._rot.y, desc._rot.z);
            }
            desc._scl = new Vector3(
                Convert.ToSingle(strScl[0]),
                Convert.ToSingle(strScl[1]),
                Convert.ToSingle(strScl[2]));
            s_dicDoodadData.Add(desc._id, desc);
        }
    }
コード例 #3
0
    protected override void OnPEInstantiate(uLink.NetworkMessageInfo info)
    {
        objType = (DoodadType)info.networkView.initialData.Read <int>();
        int playerId = info.networkView.initialData.Read <int>();

        _teamId      = info.networkView.initialData.Read <int>();
        _assetId     = info.networkView.initialData.Read <int>();
        _id          = info.networkView.initialData.Read <int>();
        _protoTypeId = info.networkView.initialData.Read <int>();
        Vector3         scale  = info.networkView.initialData.Read <Vector3>();
        string          param  = info.networkView.initialData.Read <string>();
        SceneDoodadDesc doodad = null;

        _pos = transform.position;
        rot  = transform.rotation;

        if (null == ParentTrans)
        {
            ParentTrans = new GameObject("DoodadNetworkMgr").transform;
        }

        transform.parent = ParentTrans;

        if (PeGameMgr.IsMultiStory)
        {
            doodad = StoryDoodadMap.Get(_assetId);
        }

        if (objType == DoodadType.DoodadType_Drop || objType == DoodadType.DoodadType_Dead)
        {
            itemBox = ItemBoxMgr.Instance.AddItemMultiPlay(OwnerView.viewID.id, playerId, _pos, this);
        }
        else if (objType == DoodadType.DoodadType_SceneBox)
        {
            if (doodad != null)
            {
                entity = DoodadEntityCreator.CreateStoryDoodadNet(_assetId, Id);
            }
            else
            {
                entity = DoodadEntityCreator.CreateDoodadNet(_protoTypeId, _pos, scale, rot, Id);
            }

            if (entity != null)
            {
                WareHouseObject script = entity.gameObject.GetComponent <WareHouseObject>();
                if (script != null)
                {
                    script._id = _assetId;
                }
            }
        }
        else if (objType == DoodadType.DoodadType_SceneItem)
        {
            string[] str = param.Split('|');
            if (str.Length != 2)
            {
                return;
            }

            _sceneItemName = str[1];
            if (_sceneItemName == "ash_box")
            {
                itemBox = ItemBoxMgr.Instance.AddItemMultiPlay(OwnerView.viewID.id, _assetId, _pos, this);
            }
            else if (_sceneItemName == "ash_ball")
            {
                itemBox = ItemBoxMgr.Instance.AddItemMultiPlay(OwnerView.viewID.id, _assetId, _pos, this);
            }
            else
            {
                RequestItemList();
            }
        }
        else if (objType == DoodadType.DoodadType_Repair)
        {
            if (doodad != null)
            {
                entity = DoodadEntityCreator.CreateStoryDoodadNet(_assetId, Id);
            }
            else
            {
                entity = DoodadEntityCreator.CreateDoodadNet(_protoTypeId, _pos, scale, rot, Id);
            }
        }
        else if (objType == DoodadType.DoodadType_Power)
        {
            if (doodad != null)
            {
                entity = DoodadEntityCreator.CreateStoryDoodadNet(_assetId, Id);
            }
            else
            {
                entity = DoodadEntityCreator.CreateDoodadNet(_protoTypeId, _pos, scale, rot, Id);
            }
        }
        else if (objType == DoodadType.DoodadType_RandomBuilding ||
                 objType == DoodadType.DoodadType_RandomBuilding_Repair ||
                 objType == DoodadType.DoodadType_RandomBuilding_Power)
        {
            ExtractParam(param, out townId, out _campId, out _damageId, out _dPlayerId);
            if (doodad != null)
            {
                entity = DoodadEntityCreator.CreateStoryDoodadNet(_assetId, Id);
            }
            else
            {
                entity = DoodadEntityCreator.CreateNetRandTerDoodad(Id, _protoTypeId, _pos, scale, rot, townId, _campId, _damageId, _dPlayerId);
            }
        }
        else
        {
            if (doodad != null)
            {
                entity = DoodadEntityCreator.CreateStoryDoodadNet(_assetId, Id);
            }
            else
            {
                entity = DoodadEntityCreator.CreateDoodadNet(_protoTypeId, _pos, scale, rot, Id);
            }
        }

        if (entity != null)
        {
            OnSpawned(entity.gameObject);
        }

        mapObjNetworkMgr.Add(this);
        gameObject.name = string.Format("Mapobj assetId:{0}, protoTypeId:{1}, objType:{2}, entityId:{3}", _assetId, _protoTypeId, objType, _id);
    }