public static Units CreateMapItem(MapItemInfo info, UnitControlType unitControlType = UnitControlType.None)
        {
            if (info == null)
            {
                return(null);
            }
            SkillUnitData vo = Singleton <SkillUnitDataMgr> .Instance.GetVo(info.uniTypeId);

            if (vo == null)
            {
                return(null);
            }
            Dictionary <DataType, object> dictionary = new Dictionary <DataType, object>();

            dictionary.Add(DataType.NameId, info.uniTypeId);
            dictionary.Add(DataType.TeamType, (TeamType)info.group);
            if (info.unitId != 0)
            {
                dictionary.Add(DataType.UniqueId, info.unitId);
            }
            Units units;

            if (vo.IsBloodBall)
            {
                units = MapManager.Instance.SpawnBuffItem(dictionary, null, MoveController.SVectgor3ToVector3(info.burnPos), Quaternion.identity, unitControlType);
            }
            else
            {
                Units unit = MapManager.Instance.GetUnit(info.callUnitId);
                units = MapManager.Instance.SpawnSkillUnit(dictionary, null, MoveController.SVectgor3ToVector3(info.burnPos), Quaternion.identity, unitControlType, unit, info.callSkillId);
                HighEffectData vo2 = Singleton <HighEffectDataManager> .Instance.GetVo(info.hieffId);

                if (vo2 != null)
                {
                    List <Units> list = new List <Units>();
                    if (info.targetUnitIds != null)
                    {
                        for (int i = 0; i < info.targetUnitIds.Count; i++)
                        {
                            Units unit2 = MapManager.Instance.GetUnit(info.targetUnitIds[i]);
                            list.Add(unit2);
                        }
                    }
                    BornUnitAction.SetPosition(units, list, unit, vo2, MoveController.SVectgor3ToVector3(info.burnPos));
                }
            }
            if (units)
            {
                units.UpdateVisible();
            }
            return(units);
        }
Beispiel #2
0
        protected override void doStartHighEffect_Special()
        {
            Dictionary <DataType, object> dictionary = new Dictionary <DataType, object>();
            string unit_id = this.data.unit_id;

            dictionary.Add(DataType.NameId, unit_id);
            dictionary.Add(DataType.TeamType, base.unit.teamType);
            UnitControlType unitControlType = UnitControlType.None;

            if (base.unit != null)
            {
                unitControlType = base.unit.unitControlType;
            }
            SkillUnit skillUnit = null;

            if (!Singleton <PvpManager> .Instance.IsInPvp)
            {
                skillUnit = (MapManager.Instance.SpawnSkillUnit(dictionary, null, base.unit.mTransform.position, Quaternion.identity, unitControlType, base.unit, this.skillId) as SkillUnit);
            }
            if (skillUnit != null)
            {
                skillUnit.unitControlType = base.unit.unitControlType;
                skillUnit.SetParentUnit(base.unit);
                skillUnit.UnitInit(false);
                string[] skillIDs = skillUnit.skillManager.GetSkillIDs();
                string[] array    = skillIDs;
                for (int i = 0; i < array.Length; i++)
                {
                    string skillID = array[i];
                    skillUnit.skillManager.SetSkillLevel(skillID, base.unit.skillManager.GetSkillLevel(this.skillId));
                }
                skillUnit.UnitStart();
                Vector3?skillPosition = this.skillPosition;
                Vector3 arg_159_0;
                if (skillPosition.HasValue)
                {
                    Vector3?skillPosition2 = this.skillPosition;
                    arg_159_0 = skillPosition2.Value;
                }
                else
                {
                    arg_159_0 = base.unit.mTransform.position;
                }
                Vector3 position = arg_159_0;
                BornUnitAction.SetPosition(skillUnit, this.targetUnits, base.unit, this.data, position);
            }
            this.Destroy();
        }
        public static Units CreateMapItem(UnitRuntimeInfo info, UnitControlType unitControlType = UnitControlType.None)
        {
            if (info == null)
            {
                return(null);
            }
            if (info.baseUnitInfo == null)
            {
                return(null);
            }
            if (info.baseUnitInfo.skillunitInfo == null)
            {
                return(null);
            }
            SkillUnitData vo = Singleton <SkillUnitDataMgr> .Instance.GetVo(info.baseUnitInfo.typeId);

            if (vo == null)
            {
                return(null);
            }
            Dictionary <DataType, object> dictionary = new Dictionary <DataType, object>();

            dictionary.Add(DataType.NameId, info.baseUnitInfo.typeId);
            dictionary.Add(DataType.TeamType, (TeamType)info.baseUnitInfo.group);
            if (info.baseUnitInfo.unitId != 0)
            {
                dictionary.Add(DataType.UniqueId, info.baseUnitInfo.unitId);
            }
            Units result;

            if (vo.IsBloodBall)
            {
                result = MapManager.Instance.SpawnBuffItem(dictionary, null, MoveController.SVectgor3ToVector3(info.baseUnitInfo.skillunitInfo.burnPos), Quaternion.identity, unitControlType);
            }
            else
            {
                result = MapManager.Instance.SpawnSkillUnit(dictionary, null, MoveController.SVectgor3ToVector3(info.baseUnitInfo.skillunitInfo.burnPos), Quaternion.identity, unitControlType, null, string.Empty);
            }
            return(result);
        }
        public Units SpawnInstance(EntityVo npcinfo, string tag, TeamType teamType, int spawnPos, string respawnInterval = "[]", Transform newSpawnPoint = null, UnitControlType controlType = UnitControlType.None, UnitType unitType = UnitType.None)
        {
            if (npcinfo == null || npcinfo.npc_id == null || npcinfo.npc_id == string.Empty || tag == null)
            {
                ClientLogger.Error("SpawnInstance line 1 null");
                return(null);
            }
            Dictionary <AttrType, float> dictionary = new Dictionary <AttrType, float>();

            if (tag == "Hero" || tag == "Player")
            {
                string        npc_id       = npcinfo.npc_id;
                int           level        = npcinfo.level;
                int           quality      = npcinfo.quality;
                int           star         = npcinfo.star;
                float         hp           = npcinfo.hp;
                float         mp           = npcinfo.mp;
                SysHeroMainVo heroMainData = BaseDataMgr.instance.GetHeroMainData(npc_id);
                if (heroMainData == null || heroMainData.model_id == null)
                {
                    ClientLogger.Error("SpawnInstance: no hero found #" + npc_id);
                    return(null);
                }
                Dictionary <DataType, object> dictionary2 = new Dictionary <DataType, object>
                {
                    {
                        DataType.NameId,
                        npc_id
                    },
                    {
                        DataType.ModelId,
                        heroMainData.model_id
                    },
                    {
                        DataType.TeamType,
                        teamType
                    },
                    {
                        DataType.AIType,
                        2
                    },
                    {
                        DataType.AttrFactor,
                        SpawnUtility.GetAttrFactor(teamType, this._myScene)
                    },
                    {
                        DataType.Level,
                        level
                    },
                    {
                        DataType.Quality,
                        quality
                    },
                    {
                        DataType.Star,
                        star
                    },
                    {
                        DataType.Skin,
                        npcinfo.skin
                    }
                };
                if (npcinfo.uid != 0)
                {
                    dictionary2.Add(DataType.UniqueId, npcinfo.uid);
                }
                if (hp != 0f)
                {
                    dictionary.Add(AttrType.Hp, hp);
                }
                if (mp != 0f)
                {
                    dictionary.Add(AttrType.Mp, mp);
                }
                Transform transform = newSpawnPoint;
                if (!transform)
                {
                    transform = MapManager.Instance.GetSpawnPos(teamType, spawnPos);
                }
                Units result = MapManager.Instance.SpawnUnit(tag, dictionary2, dictionary, transform.position, transform.rotation, controlType, true, null, unitType);
                if (!transform)
                {
                    ClientLogger.Error(string.Format("SpawnInstance: GetSpawnPos failed for {0} {1} in {2}", teamType, spawnPos, LevelManager.CurLevelId));
                }
                return(result);
            }
            else if (tag.Equals("Home"))
            {
                string    npc_id2    = npcinfo.npc_id;
                Transform transform2 = newSpawnPoint;
                if (!transform2)
                {
                    transform2 = MapManager.Instance.GetSpawnPos(teamType, npcinfo.pos);
                }
                SysMonsterMainVo monsterMainData = BaseDataMgr.instance.GetMonsterMainData(npc_id2);
                if (monsterMainData == null)
                {
                    ClientLogger.Error("SpawnInstance: no home found #" + npc_id2);
                    return(null);
                }
                Dictionary <DataType, object> dictionary3 = new Dictionary <DataType, object>
                {
                    {
                        DataType.NameId,
                        npc_id2
                    },
                    {
                        DataType.ModelId,
                        monsterMainData.model_id
                    },
                    {
                        DataType.TeamType,
                        teamType
                    },
                    {
                        DataType.AIType,
                        npcinfo.ai_type
                    },
                    {
                        DataType.AttrFactor,
                        SpawnUtility.GetAttrFactor(teamType, this._myScene)
                    },
                    {
                        DataType.Skin,
                        npcinfo.skin
                    }
                };
                if (npcinfo.uid != 0)
                {
                    dictionary3.Add(DataType.UniqueId, npcinfo.uid);
                }
                return(MapManager.Instance.SpawnUnit(tag, dictionary3, dictionary, transform2.position, transform2.rotation, controlType, false, null, unitType));
            }
            else
            {
                string    npc_id3    = npcinfo.npc_id;
                Transform transform3 = newSpawnPoint;
                if (!transform3)
                {
                    transform3 = MapManager.Instance.GetSpawnPos(teamType, npcinfo.pos);
                }
                SysMonsterMainVo monsterMainData2 = BaseDataMgr.instance.GetMonsterMainData(npc_id3);
                if (monsterMainData2 == null)
                {
                    ClientLogger.Error("SpawnInstance: no npc found #" + npc_id3);
                    return(null);
                }
                Dictionary <DataType, object> dictionary4 = new Dictionary <DataType, object>
                {
                    {
                        DataType.NameId,
                        npc_id3
                    },
                    {
                        DataType.ModelId,
                        monsterMainData2.model_id
                    },
                    {
                        DataType.TeamType,
                        teamType
                    },
                    {
                        DataType.AIType,
                        npcinfo.ai_type
                    },
                    {
                        DataType.AttrFactor,
                        SpawnUtility.GetAttrFactor(teamType, this._myScene)
                    },
                    {
                        DataType.Skin,
                        npcinfo.skin
                    }
                };
                if (npcinfo.uid != 0)
                {
                    dictionary4.Add(DataType.UniqueId, npcinfo.uid);
                }
                return(MapManager.Instance.SpawnUnit(tag, dictionary4, dictionary, transform3.position, transform3.rotation, controlType, false, null, unitType));
            }
        }
        public Units SpawnEyeItemInstance(EntityVo npcinfo, string tag, TeamType teamType, string respawnInterval, Transform newSpawnPoint, SVector3 eyeItemInfoInst, string eyeItemPreObjRes, UnitControlType controlType)
        {
            if (npcinfo == null || npcinfo.npc_id == null || npcinfo.npc_id == string.Empty || tag == null)
            {
                return(null);
            }
            string           npc_id          = npcinfo.npc_id;
            SysMonsterMainVo monsterMainData = BaseDataMgr.instance.GetMonsterMainData(npc_id);

            if (monsterMainData == null)
            {
                ClientLogger.Error("SpawnInstance: no npc found #" + npc_id);
                return(null);
            }
            Dictionary <DataType, object> dictionary = new Dictionary <DataType, object>
            {
                {
                    DataType.NameId,
                    npc_id
                },
                {
                    DataType.ModelId,
                    monsterMainData.model_id
                },
                {
                    DataType.TeamType,
                    teamType
                },
                {
                    DataType.AIType,
                    npcinfo.ai_type
                },
                {
                    DataType.AttrFactor,
                    SpawnUtility.GetAttrFactor(teamType, this._myScene)
                }
            };

            if (npcinfo.uid != 0)
            {
                dictionary.Add(DataType.UniqueId, npcinfo.uid);
            }
            Dictionary <AttrType, float> unitAttrs = new Dictionary <AttrType, float>();

            return(MapManager.Instance.SpawnEyeItemUnit(tag, dictionary, unitAttrs, newSpawnPoint, eyeItemInfoInst, eyeItemPreObjRes, controlType, false));
        }