Esempio n. 1
0
        private static String getInsertSql( EntityInfo entityInfo )
        {
            String str = "insert into " + entityInfo.TableName + " (";
            String fStr = "";
            String vStr = ") values(";
            for (int i = 0; i < entityInfo.SavedPropertyList.Count; i++) {
                EntityPropertyInfo info = entityInfo.SavedPropertyList[i];

                if ((
                    ( /**/!DbConfig.Instance.IsAutoId || !(info.Name.ToLower() == "id") || (entityInfo.Parent != null))
                    && info.SaveToDB)
                    && (!info.IsList && !info.IsList)
                    )
                {
                    String col = info.ColumnName ?? "";
                    fStr = fStr + col + ", ";
                    vStr = vStr + entityInfo.Dialect.GetParameter( info.ColumnName ) + ", ";
                }
            }
            fStr = fStr.Trim().TrimEnd( ',' );
            vStr = vStr.Trim().TrimEnd( ',' );
            str = str + fStr + vStr + ")";
            logger.Info( LoggerUtil.SqlPrefix + entityInfo.Name + " InsertSql:" + str );
            return str;
        }
 public static string toString(EntityInfo entityInfo)
 {
     entity = entityInfo.getName + " = {\n";
     addGenericAttributes(entityInfo);
     addComponentsAttributes(entityInfo);
     return entity + "\n},";
 }
        public SelectStatement(EntityInfo entityInfo, string rootName, string rootIdAlias, string orderByClause)
        {
            if (entityInfo.IsRoot)
            {
                builder.AppendFormat("select distinct {0}.* from {0}", entityInfo.Name);
                if (!string.IsNullOrEmpty(rootName) && !string.IsNullOrEmpty(rootIdAlias))
                    builder.AppendFormat(" inner join {0} on {0}.{1} = {2}.{3}", rootName, rootIdAlias, entityInfo.Name, entityInfo.Identifier.Name);
                if (!string.IsNullOrEmpty(orderByClause))
                    builder.AppendFormat(" order by {0}", orderByClause);
                builder.Append(";");
            }
            else
            {
                builder.AppendFormat("select distinct {0}.* from {0}", entityInfo.Name);

                var previousName = entityInfo.Name;
                var previousIdName = entityInfo.Identifier.Name;
                var parent = entityInfo.Parent;
                while (parent != null)
                {
                    builder.AppendFormat(" inner join {0} on {0}.Id = {1}.Parent", parent.Name, previousName);
                    previousName = parent.Name;
                    previousIdName = parent.Identifier.Name;
                    parent = parent.Parent;
                }

                if (!string.IsNullOrEmpty(rootName) && !string.IsNullOrEmpty(rootIdAlias))
                    builder.AppendFormat(" inner join {0} on {0}.{1} = {2}.{3}", rootName, rootIdAlias, previousName, previousIdName);

                if (entityInfo.Sequence != null)
                    builder.AppendFormat(" order by {0}.{1}", entityInfo.Name, entityInfo.Sequence.Name);
            }
        }
Esempio n. 4
0
 public static EntityMemberMask Create(EntityInfo entity, string propertiesOrGroups)
 {
     var invalidNames = new StringList();
       var mask = new EntityMemberMask(propertiesOrGroups, entity);
       var props = propertiesOrGroups.SplitNames(',', ';');
       foreach (var name in props) {
     //first try member
     if (string.IsNullOrWhiteSpace(name))
       continue;
     var grp = entity.GetPropertyGroup(name);
     if (grp != null) {
       foreach (var m in grp.Members)
     mask.Set(m);
       continue;
     }
     var member = entity.GetMember(name);
     if (member != null) {
       mask.Set(member);
       continue;
     }
     //name is invalid
     invalidNames.Add(name);
       }
       if (invalidNames.Count > 0)
     Util.Throw("Properties/subgroups [{0}] not found in entity {1}.", string.Join(",", invalidNames), entity.EntityType);
       return mask;
 }
Esempio n. 5
0
        public static int DeleteBatch( String condition, EntityInfo entityInfo )
        {
            if (strUtil.IsNullOrEmpty( condition )) {
                return 0;
            }

            String deleteSql = new SqlBuilder( entityInfo ).GetDeleteSql( condition );
            logger.Info(LoggerUtil.SqlPrefix+ "delete sql : " + deleteSql );

            List<IInterceptor> ilist = MappingClass.Instance.InterceptorList;
            for (int i = 0; i < ilist.Count; i++) {
                ilist[i].BeforDeleteBatch( entityInfo.Type, condition );
            }

            IDbCommand cmd = DataFactory.GetCommand( deleteSql, DbContext.getConnection( entityInfo ) );
            int rowAffected = cmd.ExecuteNonQuery();
            logger.Info( "delete : " + rowAffected + " records affected" );
            cmd.Connection.Close();

            for (int i = 0; i < ilist.Count; i++) {
                ilist[i].AfterDeleteBatch( entityInfo.Type, condition );
            }

            // update cache  timestamp
            CacheTime.updateTable( entityInfo.Type );

            return rowAffected;
        }
Esempio n. 6
0
        public static int Delete( int id, IEntity obj, EntityInfo entityInfo )
        {
            List<IInterceptor> ilist = MappingClass.Instance.InterceptorList;
            for (int i = 0; i < ilist.Count; i++) {
                ilist[i].BeforDelete( obj );
            }

            int rowAffected = 0;
            rowAffected += deleteSingle( id, entityInfo );
            if (entityInfo.ChildEntityList.Count > 0) {
                foreach (EntityInfo info in entityInfo.ChildEntityList) {
                    rowAffected += deleteSingle( id, MappingClass.Instance.ClassList[info.Type.FullName] as EntityInfo );
                }
            }
            if (entityInfo.Parent != null) {
                IEntity objP = Entity.New( entityInfo.Parent.Type.FullName );
                rowAffected += deleteSingle( id, Entity.GetInfo( objP ) );
            }

            for (int i = 0; i < ilist.Count; i++) {
                ilist[i].AfterDelete( obj );
            }

            CacheUtil.CheckCountCache( "delete", obj, entityInfo );

            return rowAffected;
        }
        private void AddDeleteStatements(IEntity entity, EntityInfo entityInfo)
        {
            foreach (var valueInfo in entityInfo.Values)
            {
                foreach (var value in entity.GetValues(valueInfo))
                {
                    var builder = new ComplexCommandBuilder();
                    var idParameter = value.Id.ToParameter();
                    builder.AddParameter(idParameter);
                    var whereClause = string.Format("{0}.{1} = {2}", valueInfo.Name, valueInfo.Identifer.Name, idParameter.Name);
                    var statement = new DeleteStatement(valueInfo.Name, whereClause);
                    builder.AddStatement(statement);
                    Add(builder);
                }
            }

            foreach (var childInfo in entityInfo.Children)
            {
                foreach (var child in entity.GetChildren(childInfo))
                {
                    var builder = new ComplexCommandBuilder();
                    var idParameter = child.Id.ToParameter();
                    builder.AddParameter(idParameter);
                    var whereClause = string.Format("{0}.{1} = {2}", childInfo.Name, childInfo.Identifier.Name, idParameter.Name);
                    var statement = new DeleteStatement(childInfo.Name, whereClause);
                    builder.AddStatement(statement);

                    AddDeleteStatements(child, childInfo);
                    Add(builder);
                }
            }
        }
Esempio n. 8
0
        public EntityInfo TargetEntity; //for delete, insert, update

        #endregion Fields

        #region Constructors

        public LinqCommand(EntityQuery query, LinqCommandType commandType, LinqCommandKind kind, EntityInfo targetEntity)
        {
            Kind = kind;
              CommandType = commandType;
              Query = query;
              TargetEntity = targetEntity;
        }
Esempio n. 9
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="T:System.Object" /> class.
 /// </summary>
 public EntityRelationSide(EntityInfo entity, NavigationPropertyEntityInfo property, NavigationType navigationType, SimplePropertyEntityInfo[] keyColumns)
 {
     Property = property;
     NavigationType = navigationType;
     KeyColumns = keyColumns;
     Entity = entity;
 }
 private void AddRootCommandBuilder(EntityInfo entityInfo)
 {
     var builder = new ComplexCommandBuilder();
     builder.AddStatement(new CreateTableStatement(entityInfo));
     
     Add(builder);
 }
Esempio n. 11
0
 public EntityCommand BuildCrudSelectAllPagedCommand(EntityInfo entity)
 {
     var cmd = AddCommand(entity.Name + "_SelectAllPaged", "Selects all entities.", EntityCommandKind.SelectAllPaged, entity);
       cmd.Parameters.Add(new EntityCommandParameter("__skiprows", typeof(int), 0, 0));
       cmd.Parameters.Add(new EntityCommandParameter("__maxrows", typeof(int), 0, int.MaxValue));
       return cmd;
 }
Esempio n. 12
0
        private static Result Update( IEntity obj, EntityInfo entityInfo ) {
            Result result = Validator.Validate( obj, "update" );
            if (result.IsValid == false) return result;

            List<IInterceptor> ilist = MappingClass.Instance.InterceptorList;
            for (int i = 0; i < ilist.Count; i++) {
                ilist[i].BeforUpdate( obj );
            }

            updateSingle( obj, entityInfo );
            if (entityInfo.Parent != null) {
                IEntity objParent = Entity.New( entityInfo.Parent.Type.FullName );
                setParentValueFromChild( objParent, obj );
                updateSingle( objParent, Entity.GetInfo( objParent ) );
            }
            CacheUtil.CheckCountCache( "insert", obj, entityInfo );


            for (int i = 0; i < ilist.Count; i++) {
                ilist[i].AfterUpdate( obj );
            }
            result.Info = obj;

            // update cache  timestamp
            CacheTime.updateTable( entityInfo.Type );

            return result;
        }
Esempio n. 13
0
 public static IList<EntityKeyMemberInfo> ParseMemberNames(EntityInfo entity, string names, bool ordered = false, Action<string> errorAction = null)
 {
     var specs = StringHelper.SplitNames(names);
       var mList = new List<EntityKeyMemberInfo>();
       foreach(var spec in specs) {
     bool desc = false;
     string[] parts;
     if(ordered) {
       parts = StringHelper.SplitNames(spec, ':');
       if(parts.Length > 2) {
     if(errorAction != null) errorAction(spec);
     continue;
       }
       string strDesc = parts.Length == 1 ? "asc" : parts[1];
       switch(strDesc.ToLowerInvariant()) {
     case "":  case "asc": desc = false; break;
     case "desc": desc = true; break;
     default:
       if(errorAction != null)
         errorAction(spec);
       continue;
       }//switch
     }//if ordered
     else
       parts = new string[] { spec, null };
     var member = entity.GetMember(parts[0]);
     if(member == null) {
       if(errorAction != null)
     errorAction(spec);
     }
     mList.Add(new EntityKeyMemberInfo(member, desc));
       }//foreach spec
       return mList;
 }
Esempio n. 14
0
 public override void Apply(EntityInfo victim)
 {
     if (victim != null)
     {
         victim.ReduceHealth(value * Time.deltaTime, DamageType.Effect);
     }
 }
 protected override void OnStateLogicInit(EntityInfo npc, long deltaTime)
 {
     AiStateInfo info = npc.GetAiStateInfo();
     info.Time = 0;
     info.HomePos = npc.GetMovementStateInfo().GetPosition3D();
     info.Target = 0;
     NotifyAiInitDslLogic(npc);
 }
Esempio n. 16
0
 public EntityCommand(string commandName, string description, EntityCommandKind kind, EntityInfo entity, EntityKeyInfo selectKey = null)
     : this(commandName, description, kind)
 {
     TargetEntityInfo = entity;
       Area = entity.Area;
       TargetEntityType = entity.EntityType;
       SelectKey = selectKey;
 }
        public CreateTableStatement(EntityInfo entityInfo)
            : this(entityInfo.Name)
        {
            AddColumns(entityInfo.Elements);

            foreach (var dataType in entityInfo.DataTypes)
                AddColumns(dataType.Elements);
        }
Esempio n. 18
0
        // TODO: performance
        private static IEntity findByIdFromChild( long id, EntityInfo entityInfo ) {
            foreach (EntityInfo ei in entityInfo.ChildEntityList) {
                IEntity result = ObjectDB.FindById( id, new ObjectInfo( ei ) );
                if (result != null) return result;

            }
            return null;
        }
 private void IdleHandler(EntityInfo npc, long deltaTime)
 {
     AiStateInfo info = npc.GetAiStateInfo();
     info.Time += deltaTime;
     if (info.Time > 100) {
         info.Time = 0;
     }
 }
Esempio n. 20
0
 void Awake()
 {
     if (eInfo == null)
     {
         // Make a reference to the EntityInfo of this Buffmanager's specific character.
         eInfo = GetComponent<EntityInfo>();
     }
 }
 private static void addGenericAttributes(EntityInfo entityInfo)
 {
     entity += "\ttype = " + translateAttribute(entityInfo.getType) + ",";
     if (entityInfo.getIsPlayer)
         entity += "\n\tisPlayer = " + translateAttribute(entityInfo.getIsPlayer) + ",";
     if (entityInfo.getIsEnemy)
         entity += "\n\tisEnemy = " + translateAttribute(entityInfo.getIsEnemy) + ",";
     if (entityInfo.getIsGenerator)
         entity += "\n\tisGenerator = " + translateAttribute(entityInfo.getIsGenerator) + ",";
 }
        public InitializeTypeBatch(IDbConnection connection, Type type, IEnumerable<ILookup> lookups, IEnumerable<ISearch> searches)
            : base(connection)
        {
            var entityInfo = new EntityInfo(type);

            AddRootCommandBuilder(entityInfo);
            AddCommandBuilders(entityInfo);
            AddLookupIndices(lookups);
            AddSearchIndices(searches);
        }
Esempio n. 23
0
 internal LinqCommand(LinqCommandInfo info, EntityInfo targetEntity, object[] parameterValues)
 {
     Info = info;
       Kind = info.CommandKind;
       CommandType = info.CommandType;
       TargetEntity = targetEntity;
       ParameterValues = parameterValues;
       Util.Check(ParameterValues.Length == info.Lambda.Parameters.Count, "Parameter values count ({0}) does not match parameter count ({1}) in lambda: {2}.",
       parameterValues.Length, Info.Lambda.Parameters.Count, Info.Lambda);
 }
Esempio n. 24
0
        public int beginCount( String countSql, ObjectPage pager, EntityInfo entityInfo ) {

            String commandText = countSql;
            logger.Info( "[Page Record Count] " + commandText );
            IDbCommand command = DataFactory.GetCommand( commandText, DbContext.getConnection( entityInfo ) );
            pager.RecordCount = cvt.ToInt( command.ExecuteScalar() );
            pager.computePageCount();
            pager.resetCurrent();

            return pager.getCurrent();
        }
 protected override bool OnStateLogicCheck(EntityInfo npc, long deltaTime)
 {
     if (npc.IsDead()) {
         if (npc.GetAiStateInfo().CurState != (int)AiStateId.Idle) {
             NotifyAiStopPursue(npc);
             ChangeToState(npc, (int)AiStateId.Idle);
         }
         return false;
     }
     return true;
 }
	public static EntityInfo ObjectToEntityInfo(object o)
	{
		var d = (Dictionary<string,object>)o;
		var e = new EntityInfo();
		e.Guid = (string)d["guid"];
		e.IsLocallyCreated = (bool)d["isLocallyCreated"];
		e.Position = ObjectToVector(d["position"]);
		e.Orientation = ObjectToQuaternion(d["orientation"]);

		return e;
	}
	public static object EntityInfoToObject(EntityInfo e)
	{
		var d = new Dictionary<string, object>();
		d.Add("type", "EntityInfo");
		d.Add("guid", e.Guid);
		d.Add("isLocallyCreated", e.IsLocallyCreated);
		d.Add("position", VectorToObject(e.Position));
		d.Add("orientation", QuaternionToObject(e.Orientation));

		return d;
	}
Esempio n. 28
0
 private void BuildEntityMembers(EntityInfo entityInfo)
 {
     var typeBuilder = (TypeBuilder)entityInfo.ClassInfo.Type;
       foreach(var member in entityInfo.Members) {
     if (member.Kind == MemberKind.EntityRef) {
       BuildEntityRefProperty(typeBuilder, member);
     } else {
       BuildRegularProperty(typeBuilder, member);
     }
       }//foreach prop
       CreateConstructorsAndFactoryMethod(entityInfo, typeBuilder);
 }
Esempio n. 29
0
        private static int executeCmd( IDbCommand cmd, EntityInfo entityInfo )
        {
            cmd.ExecuteNonQuery();

            String sqlId = String.Format( "select id from {0} order by id desc", entityInfo.TableName );
            sqlId = entityInfo.Dialect.GetLimit( sqlId, 1 );
            //logger.Info( "get id sql:" + sqlId );

            cmd.CommandText = sqlId;

            return cvt.ToInt( cmd.ExecuteScalar() );
        }
Esempio n. 30
0
 public FullyCachedSet(EntityInfo entityInfo, IList<EntityRecord> records)
 {
     EntityInfo = entityInfo;
       Records = new List<EntityRecord>();
       RecordsByPrimaryKey = new Dictionary<EntityKey,EntityRecord>();
       var listType = typeof(List<>).MakeGenericType(EntityInfo.EntityType);
       Entities = Activator.CreateInstance(listType) as IList;
       foreach(var rec in records) {
     RecordsByPrimaryKey[rec.PrimaryKey] = rec;
     Records.Add(rec);
     Entities.Add(rec.EntityInstance);
       }
 }
Esempio n. 31
0
 public override void SetRef(ApplicationInfo applicationInfo, ServiceInfo databaseInfo, OperationInfo table)
 {
     ParentServiceInfo = EntityInfoUtility.GetEntityInfo(applicationInfo, ParentService);
 }
Esempio n. 32
0
    internal static void Execute(object msg, NetConnection conn)
    {
        Msg_RC_NpcMove targetmsg = msg as Msg_RC_NpcMove;

        if (null == targetmsg)
        {
            return;
        }
        EntityInfo npc = ClientModule.Instance.GetEntityById(targetmsg.npc_id);

        if (null == npc)
        {
            return;
        }
        if (targetmsg.velocity > 0)
        {
            float x, y;
            float tx, ty;
            ProtoHelper.DecodePosition2D(targetmsg.cur_pos, out x, out y);
            ProtoHelper.DecodePosition2D(targetmsg.target_pos, out tx, out ty);
            Vector2 curPos    = new Vector2(x, y);
            Vector2 targetPos = new Vector2(tx, ty);

            MovementStateInfo msi      = npc.GetMovementStateInfo();
            float             velocity = ProtoHelper.DecodeFloat(targetmsg.velocity);
            npc.GetActualProperty().SetMoveSpeed(Operate_Type.OT_Absolute, velocity);
            if (Geometry.DistanceSquare(msi.GetPosition2D(), curPos) > c_MaxPosDeltaSqr)
            {
                msi.SetPosition2D(curPos);
                UnityEngine.GameObject actor = EntityController.Instance.GetGameObject(npc.GetId());
                GameFramework.Skill.Trigers.TriggerUtil.MoveObjTo(actor, new UnityEngine.Vector3(x, actor.transform.position.y, y));
            }

            EntityViewModel viewModel = EntityViewModelManager.Instance.GetEntityViewById(targetmsg.npc_id);
            if (null != viewModel)
            {
                viewModel.MoveTo(targetPos.X, 0, targetPos.Y);
            }
        }
        else
        {
            float x, y;
            ProtoHelper.DecodePosition2D(targetmsg.cur_pos, out x, out y);
            Vector2           curPos = new Vector2(x, y);
            MovementStateInfo msi    = npc.GetMovementStateInfo();
            if (Geometry.DistanceSquare(msi.GetPosition2D(), curPos) > c_MaxPosDeltaSqr)
            {
                msi.SetPosition2D(curPos);
                UnityEngine.GameObject actor = EntityController.Instance.GetGameObject(npc.GetId());
                GameFramework.Skill.Trigers.TriggerUtil.MoveObjTo(actor, new UnityEngine.Vector3(x, actor.transform.position.y, y));
            }
            else
            {
                EntityViewModel viewModel = EntityViewModelManager.Instance.GetEntityViewById(targetmsg.npc_id);
                if (null != viewModel)
                {
                    viewModel.MoveTo(curPos.X, 0, curPos.Y);
                }
            }
        }
    }
Esempio n. 33
0
 public override bool AddRemark(EntityInfo entity)
 {
     return(true);
 }
Esempio n. 34
0
        /// <summary>
        /// Recupera o nome da entidade
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="ignoreTypeSchema"></param>
        /// <returns></returns>
        public override ITranslatedName GetName(EntityInfo entity, bool ignoreTypeSchema)
        {
            var name = (TranslatedTableName)base.GetName(entity, ignoreTypeSchema);

            return(new TranslatedTableName((name.Schema ?? "").ToUpper(), name.Name.ToUpper()));
        }
Esempio n. 35
0
        public override void ExistLogic(EntityInfo entityInfo)
        {
            if (entityInfo.Columns.HasValue())
            {
                Check.Exception(entityInfo.Columns.Where(it => it.IsPrimarykey).Count() > 1, "Use Code First ,The primary key must not exceed 1");

                var tableName = GetTableName(entityInfo);
                var dbColumns = this.Context.DbMaintenance.GetColumnInfosByTableName(tableName);
                ConvertColumns(dbColumns);
                var entityColumns = entityInfo.Columns.Where(it => it.IsIgnore == false).ToList();
                var dropColumns   = dbColumns
                                    .Where(dc => !entityColumns.Any(ec => dc.DbColumnName.Equals(ec.OldDbColumnName, StringComparison.CurrentCultureIgnoreCase)))
                                    .Where(dc => !entityColumns.Any(ec => dc.DbColumnName.Equals(ec.DbColumnName, StringComparison.CurrentCultureIgnoreCase)))
                                    .ToList();
                var addColumns = entityColumns
                                 .Where(ec => ec.OldDbColumnName.IsNullOrEmpty() || !dbColumns.Any(dc => dc.DbColumnName.Equals(ec.OldDbColumnName, StringComparison.CurrentCultureIgnoreCase)))
                                 .Where(ec => !dbColumns.Any(dc => ec.DbColumnName.Equals(dc.DbColumnName, StringComparison.CurrentCultureIgnoreCase))).ToList();
                //var alterColumns = entityColumns
                //                           .Where(ec => !dbColumns.Any(dc => dc.DbColumnName.Equals(ec.OldDbColumnName, StringComparison.CurrentCultureIgnoreCase)))
                //                           .Where(ec =>
                //                                          dbColumns.Any(dc => dc.DbColumnName.Equals(ec.DbColumnName)
                //                                               && ((!UtilMethods.GetUnderType(ec.PropertyInfo).IsEnum() && UtilMethods.GetUnderType(ec.PropertyInfo).IsIn(UtilConstants.StringType)) ||

                //                                                    IsSamgeType(ec, dc)))).ToList();
                var renameColumns = entityColumns
                                    .Where(it => !string.IsNullOrEmpty(it.OldDbColumnName))
                                    .Where(entityColumn => dbColumns.Any(dbColumn => entityColumn.OldDbColumnName.Equals(dbColumn.DbColumnName, StringComparison.CurrentCultureIgnoreCase)))
                                    .ToList();


                var isChange = false;
                foreach (var item in addColumns)
                {
                    this.Context.DbMaintenance.AddColumn(tableName, EntityColumnToDbColumn(entityInfo, tableName, item));
                    isChange = true;
                }
                foreach (var item in dropColumns)
                {
                    //this.Context.DbMaintenance.DropColumn(tableName, item.DbColumnName);
                    //isChange = true;
                }
                //foreach (var item in alterColumns)
                //{
                //    //this.Context.DbMaintenance.AddColumn(tableName, EntityColumnToDbColumn(entityInfo, tableName, item));
                //    //isChange = true;
                //}
                foreach (var item in renameColumns)
                {
                    throw new  NotSupportedException("rename Column");
                }

                foreach (var item in entityColumns)
                {
                    var dbColumn = dbColumns.FirstOrDefault(dc => dc.DbColumnName.Equals(item.DbColumnName, StringComparison.CurrentCultureIgnoreCase));
                    if (dbColumn == null)
                    {
                        continue;
                    }
                    bool pkDiff, idEntityDiff;
                    KeyAction(item, dbColumn, out pkDiff, out idEntityDiff);
                    if (dbColumn != null && pkDiff && !idEntityDiff)
                    {
                        var isAdd = item.IsPrimarykey;
                        if (isAdd)
                        {
                            this.Context.DbMaintenance.AddPrimaryKey(tableName, item.DbColumnName);
                        }
                        else
                        {
                            this.Context.DbMaintenance.DropConstraint(tableName, string.Format("PK_{0}_{1}", tableName, item.DbColumnName));
                        }
                    }
                    else if (pkDiff || idEntityDiff)
                    {
                        ChangeKey(entityInfo, tableName, item);
                    }
                }
                if (isChange && base.IsBackupTable)
                {
                    this.Context.DbMaintenance.BackupTable(tableName, tableName + DateTime.Now.ToString("yyyyMMddHHmmss"), MaxBackupDataRows);
                }
            }
        }
Esempio n. 36
0
 public UIWidgetInfo(EntityInfo entityInfo) : base(entityInfo)
 {
 }
Esempio n. 37
0
 internal DbColumnInfo GetEntityColumnToDbColumn(EntityInfo entity, string dbTableName, EntityColumnInfo item)
 {
     return(EntityColumnToDbColumn(entity, dbTableName, item));
 }
Esempio n. 38
0
 public DeleteTemplate(EntityInfo model, string applicationId) : base(model, applicationId)
 {
 }
Esempio n. 39
0
        private void GenerateEntities()
        {
            _typeRegistry = _dbModel.Driver.TypeRegistry;
            var viewPrefix  = _dbModel.Config.NamingPolicy.ViewPrefix;
            var tablePrefix = _dbModel.Config.NamingPolicy.TablePrefix;
            //track uniqueness of type names - we might have trouble if we have 2 tables with the same name in different schemas
            var typeNames = new StringSet();

            foreach (var table in _dbModel.Tables)
            {
                if (_config.IgnoreTables.Contains(table.TableName))
                {
                    continue;
                }
                var module  = GetModule(table.Schema);
                var entName = DbNameToCsName(table.TableName);
                switch (table.Kind)
                {
                case EntityKind.Table:
                    if (string.IsNullOrWhiteSpace(tablePrefix) && entName.StartsWith(tablePrefix))
                    {
                        entName = entName.Substring(tablePrefix.Length);
                    }
                    break;

                case EntityKind.View:
                    if (!string.IsNullOrWhiteSpace(viewPrefix) && entName.StartsWith(viewPrefix))
                    {
                        entName = entName.Substring(viewPrefix.Length);
                    }
                    break;
                }
                if (_config.Options.IsSet(DbFirstOptions.ChangeEntityNamesToSingular))
                {
                    entName = StringHelper.Unpluralize(entName);
                }
                entName = "I" + entName;
                if (typeNames.Contains(entName))
                {
                    entName = entName + "_" + table.Schema;
                }
                var entType = CreateDummyEntityType(entName); //dummy type, just to have unique type instance
                typeNames.Add(entName);
                // we add only entity types for tables; views are ignored (we do not have queires to create view definitions)
                if (table.Kind == EntityKind.Table)
                {
                    module.Entities.Add(entType); // register type in module
                }
                // Note: we generate entity interfaces for Views, but do not register them as entities
                var ent = new EntityInfo(module, entType, table.Kind);
                ent.TableName = table.TableName;
                table.Entity  = ent;
                _entityModel.RegisterEntity(ent);
                // generate entity members
                foreach (var col in table.Columns)
                {
                    var nullable       = col.Flags.IsSet(DbColumnFlags.Nullable);
                    var memberDataType = GetMemberType(col);
                    var memberName     = CheckMemberName(DbNameToCsName(col.ColumnName), ent);
                    var member         = col.Member = new EntityMemberInfo(ent, MemberKind.Column, memberName, memberDataType);
                    member.ColumnName = col.ColumnName;
                    // member is added to ent.Members automatically in constructor
                    if (nullable)
                    {
                        member.Flags |= EntityMemberFlags.Nullable; // in case it is not set (for strings)
                    }
                    if (col.Flags.IsSet(DbColumnFlags.Identity))
                    {
                        member.Flags        |= EntityMemberFlags.Identity;
                        member.AutoValueType = AutoType.Identity;
                    }
                    //hack
                    if (col.TypeInfo.VendorDbType.TypeName == "timestamp")
                    {
                        member.AutoValueType = AutoType.RowVersion;
                    }
                    member.Size      = (int)col.TypeInfo.Size;
                    member.Scale     = col.TypeInfo.Scale;
                    member.Precision = col.TypeInfo.Precision;
                    //Check if we need to specify DbType or DbType spec explicitly
                    bool isMemo = member.Size < 0;
                    if (isMemo)
                    {
                        member.Flags |= EntityMemberFlags.UnlimitedSize;
                    }
                    var typeDef = col.TypeInfo.VendorDbType;

                    var dftTypeDef = _typeRegistry.FindVendorDbTypeInfo(member.DataType, isMemo);
                    if (typeDef == dftTypeDef)
                    {
                        continue; //no need for explicit DbType
                    }

                    /*
                     * bool typeIsDefault =  typeDef.ColumnOutType == dataType && typeDef.Flags.IsSet(VendorDbTypeFlags.IsDefaultForClrType);
                     * if (typeIsDefault)
                     * continue; //no need for explicit DbType
                     */
                    //DbTypeDef is not default for this member - we need to specify DbType or TypeSpec explicitly
                    // Let's see if explicit DbType is enough; let's try to search by DbType and check if it brings the same db type
                    var vendorTypeDef = _typeRegistry.FindVendorDbTypeInfo(col.TypeInfo.VendorDbType.DbType, memberDataType, isMemo);
                    if (vendorTypeDef == typeDef)
                    {
                        member.ExplicitDbType = col.TypeInfo.DbType; //Explicit db type is enough
                    }
                    else
                    {
                        member.ExplicitDbTypeSpec = col.TypeInfo.SqlTypeSpec;
                    }
                }
            } //foreach table
        }     //method
        public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime)
        {
            GfxSkillSenderInfo senderObj = sender as GfxSkillSenderInfo;

            if (null == senderObj)
            {
                return(false);
            }
            Scene      scene = senderObj.Scene;
            EntityInfo obj   = senderObj.GfxObj;

            if (obj == null)
            {
                return(false);
            }
            long durationTime = m_DurationTime;
            long intervalTime = m_IntervalTime;

            if (durationTime <= 0)
            {
                durationTime = (long)senderObj.ConfigData.duration;
            }
            if (intervalTime <= 0)
            {
                intervalTime = (long)senderObj.ConfigData.interval;
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            if (curSectionTime > StartTime + durationTime)
            {
                return(false);
            }
            if (m_LastTime + intervalTime < curSectionTime)
            {
                m_LastTime = curSectionTime;

                int targetType = scene.EntityController.GetTargetType(senderObj.ActorId, senderObj.ConfigData, senderObj.Seq);
                int impactId   = TriggerUtil.GetSkillImpactId(instance.Variables, senderObj.ConfigData);
                int senderId;
                int targetId;
                scene.EntityController.CalcSenderAndTarget(senderObj, out senderId, out targetId);
                if (senderObj.ConfigData.aoeType != (int)SkillAoeType.Unknown)
                {
                    float minDistSqr = float.MaxValue;
                    TriggerUtil.AoeQuery(senderObj, instance, senderId, targetType, m_RelativeCenter, m_RelativeToTarget, (float distSqr, int objId) => {
                        if (distSqr < minDistSqr)
                        {
                            minDistSqr = distSqr;
                            targetId   = objId;
                        }
                        return(true);
                    });
                }
                Dictionary <string, object> args;
                TriggerUtil.CalcImpactConfig(0, impactId, instance, senderObj.ConfigData, out args);
                scene.EntityController.SendImpact(senderObj.ConfigData, senderObj.Seq, senderObj.ActorId, senderId, targetId, impactId, args);
            }
            return(true);
        }
        public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime)
        {
            GfxSkillSenderInfo senderObj = sender as GfxSkillSenderInfo;

            if (null == senderObj)
            {
                return(false);
            }
            if (senderObj.ConfigData.type == (int)SkillOrImpactType.Skill)
            {
                return(false);//track只能在impact或buff里使用
            }
            Scene      scene = senderObj.Scene;
            EntityInfo obj   = senderObj.GfxObj;

            if (null != obj)
            {
                if (curSectionTime >= StartTime)
                {
                    if (!m_IsStarted)
                    {
                        m_IsStarted = true;

                        Vector3 dest = obj.GetMovementStateInfo().GetPosition3D();
                        dest.Y += 1.5f;

                        Vector3 pos = scene.EntityController.GetImpactSenderPosition(senderObj.ActorId, senderObj.SkillId, senderObj.Seq);
                        object  speedObj;
                        if (instance.Variables.TryGetValue("emitSpeed", out speedObj))
                        {
                            m_Speed = (float)speedObj;
                        }
                        else
                        {
                            return(false);
                        }

                        float duration = m_Duration;
                        if (duration > Geometry.c_FloatPrecision)
                        {
                            float d = duration / 1000.0f;
                            m_Lifetime = d;
                            m_Speed    = (dest - m_StartPos).Length() / m_Lifetime;
                        }
                        else
                        {
                            m_Lifetime = 1.0f;
                            if (m_Speed > Geometry.c_FloatPrecision)
                            {
                                m_Lifetime = (dest - m_StartPos).Length() / m_Speed;
                            }
                        }
                    }
                    else if (curSectionTime > StartTime + (long)(m_Lifetime * 1000))
                    {
                        m_HitEffectRotation = Quaternion.Identity;
                        if (m_NoImpact)
                        {
                            instance.SetVariable("hitEffectRotation", m_HitEffectRotation);
                        }
                        else
                        {
                            int impactId = scene.EntityController.GetTrackSendImpact(senderObj.ActorId, senderObj.Seq, instance.Variables);
                            Dictionary <string, object> args;
                            TriggerUtil.CalcImpactConfig(0, impactId, instance, senderObj.ConfigData, out args);
                            if (args.ContainsKey("hitEffectRotation"))
                            {
                                args["hitEffectRotation"] = m_HitEffectRotation;
                            }
                            else
                            {
                                args.Add("hitEffectRotation", m_HitEffectRotation);
                            }
                            scene.EntityController.TrackSendImpact(senderObj.ActorId, senderObj.SkillId, senderObj.Seq, impactId, args);
                            int senderId, targetId;
                            scene.EntityController.CalcSenderAndTarget(senderObj, out senderId, out targetId);
                        }
                        instance.StopCurSection();
                        return(false);
                    }

                    //GameFramework.LogSystem.Debug("EmitEffectTriger:{0}", m_EffectPath);
                    return(true);
                }
                else
                {
                    return(true);
                }
            }
            else
            {
                instance.StopCurSection();
                return(false);
            }
        }
        public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime)
        {
            GfxSkillSenderInfo senderObj = sender as GfxSkillSenderInfo;

            if (null == senderObj)
            {
                return(false);
            }
            Scene      scene = senderObj.Scene;
            EntityInfo obj   = senderObj.GfxObj;

            if (obj == null)
            {
                return(false);
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            if (curSectionTime > StartTime + m_DurationTime)
            {
                return(false);
            }
            if (m_LastTime + m_IntervalTime < curSectionTime)
            {
                m_LastTime = curSectionTime;

                int ct = m_Targets.Count;
                if (ct <= 0)
                {
                    int targetType = scene.EntityController.GetTargetType(senderObj.ActorId, senderObj.ConfigData, senderObj.Seq);
                    int impactId   = TriggerUtil.GetSkillImpactId(instance.Variables, senderObj.ConfigData);
                    if (senderObj.ConfigData.type == (int)SkillOrImpactType.Skill)
                    {
                        m_SenderId = senderObj.ActorId;
                    }
                    else
                    {
                        m_SenderId = senderObj.TargetActorId;
                    }
                    TriggerUtil.AoeQuery(senderObj, instance, m_SenderId, targetType, m_RelativeCenter, m_RelativeToTarget, (float distSqr, int objId) => {
                        m_SortedTargets.Add((int)(distSqr * c_MaxObjectId) * c_MaxObjectId + objId, objId);
                        return(true);
                    });
                    var vals = m_SortedTargets.Values;
                    if (senderObj.ConfigData.maxAoeTargetCount > 0 && vals.Count > senderObj.ConfigData.maxAoeTargetCount)
                    {
                        var enumerator = vals.GetEnumerator();
                        for (int ix = 0; ix < senderObj.ConfigData.maxAoeTargetCount; ++ix)
                        {
                            enumerator.MoveNext();
                            m_Targets.Add(enumerator.Current);
                        }
                    }
                    else
                    {
                        m_Targets.AddRange(vals);
                    }
                    m_CurTargetIndex = 0;
                    ct = m_Targets.Count;
                }
                if (ct > 0 && m_CurTargetIndex < ct)
                {
                    Dictionary <string, object> args;
                    TriggerUtil.CalcImpactConfig(0, m_ImpactId, instance, senderObj.ConfigData, out args);
                    scene.EntityController.SendImpact(senderObj.ConfigData, senderObj.Seq, senderObj.ActorId, m_SenderId, m_Targets[m_CurTargetIndex], m_ImpactId, args);
                    ++m_CurTargetIndex;
                }
                else
                {
                    return(false);
                }
            }
            return(true);
        }
        public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime)
        {
            GfxSkillSenderInfo senderObj = sender as GfxSkillSenderInfo;

            if (null == senderObj)
            {
                return(false);
            }
            Scene      scene = senderObj.Scene;
            EntityInfo obj   = senderObj.GfxObj;

            if (obj == null)
            {
                return(false);
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            int senderId = senderObj.ActorId;

            if (senderObj.ConfigData.type != (int)SkillOrImpactType.Skill)
            {
                senderId = senderObj.TargetActorId;
            }
            int impactId = senderObj.ConfigData.impacttoself;

            if (senderObj.ConfigData.type != (int)SkillOrImpactType.Skill)
            {
                if (impactId <= 0)
                {
                    int skillId           = scene.EntityController.GetImpactSkillId(senderObj.ActorId, senderObj.SkillId, senderObj.Seq);
                    TableConfig.Skill cfg = TableConfig.SkillProvider.Instance.GetSkill(skillId);
                    if (null != cfg)
                    {
                        impactId = cfg.impacttoself;
                    }
                }
            }
            if (m_Radius <= Geometry.c_FloatPrecision)
            {
                Dictionary <string, object> args;
                TriggerUtil.CalcImpactConfig(0, impactId, instance, senderObj.ConfigData, out args);
                scene.EntityController.SendImpact(senderObj.ConfigData, senderObj.Seq, senderObj.ActorId, senderId, senderId, impactId, args);
            }
            else
            {
                EntityInfo targetObj = senderObj.TargetGfxObj;
                int        ct        = 0;
                List <int> targetIds = new List <int>();
                TriggerUtil.AoeQuery(scene, obj, targetObj, m_AoeType, m_Radius, m_AngleOrLength, instance, senderId, (int)SkillTargetType.Friend, m_RelativeCenter, m_RelativeToTarget, (float distSqr, int objId) => {
                    Dictionary <string, object> args;
                    TriggerUtil.CalcImpactConfig(0, impactId, instance, senderObj.ConfigData, out args);
                    scene.EntityController.SendImpact(senderObj.ConfigData, senderObj.Seq, senderObj.ActorId, senderId, objId, impactId, args);
                    targetIds.Add(objId);
                    ++ct;
                    if (m_MaxCount <= 0 || ct < m_MaxCount)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                });
            }
            return(false);
        }
Esempio n. 44
0
 //EntityInfo.Builder info;
 private void Awake()
 {
     lastInfo = EntityInfo.CreateBuilder().Build();
     //info = EntityInfo.CreateBuilder().Build();
 }
Esempio n. 45
0
        //
        /// <summary>
        /// 创建一个订购记录
        /// </summary>
        /// <param name="strBiblioRecPath">书目记录路径</param>
        /// <param name="strOrderXml">订购记录 XML</param>
        /// <param name="strStyle">创建风格。"force"表示强制写入</param>
        /// <param name="strNewOrderRecPath">返回实际写入的订购记录路径</param>
        /// <param name="strNewXml">返回实际写入的订购记录 XML</param>
        /// <param name="baNewTimestamp">返回订购记录的最新时间戳</param>
        /// <param name="strError">返回出错信息</param>
        /// <returns>-1: 出错; 1: 成功</returns>
        public int CreateOrderInfo(
            string strBiblioRecPath,
            string strOrderXml,
            string strStyle,
            out string strNewOrderRecPath,
            out string strNewXml,
            out byte[] baNewTimestamp,
            out string strError)
        {
            strError = "";

            strNewOrderRecPath = "";
            strNewXml          = "";
            baNewTimestamp     = null;

            EntityInfo info = new EntityInfo();

            info.RefID = Guid.NewGuid().ToString();

            string strTargetBiblioRecID = Global.GetRecordID(strBiblioRecPath);

            XmlDocument item_dom = new XmlDocument();

            try
            {
                item_dom.LoadXml(strOrderXml);
            }
            catch (Exception ex)
            {
                strError = "XML装载到DOM时发生错误: " + ex.Message;
                return(-1);
            }

            DomUtil.SetElementText(item_dom.DocumentElement,
                                   "parent", strTargetBiblioRecID);

            info.Action       = "new";
            info.NewRecPath   = "";
            info.NewRecord    = item_dom.OuterXml;
            info.NewTimestamp = null;
            info.Style        = strStyle;

            //
            EntityInfo[] orders = new EntityInfo[1];
            orders[0] = info;

            EntityInfo[] errorinfos = null;

            long lRet = Channel.SetOrders(
                stop,
                strBiblioRecPath,
                orders,
                out errorinfos,
                out strError);

            if (lRet == -1)
            {
                return(-1);
            }

            if (errorinfos != null && errorinfos.Length > 0)
            {
                int nErrorCount = 0;
                for (int i = 0; i < errorinfos.Length; i++)
                {
                    EntityInfo error = errorinfos[i];
                    if (error.ErrorCode != ErrorCodeValue.NoError)
                    {
                        if (String.IsNullOrEmpty(strError) == false)
                        {
                            strError += "; ";
                        }
                        strError += errorinfos[0].ErrorInfo;
                        nErrorCount++;
                    }
                    else
                    {
                        strNewOrderRecPath = error.NewRecPath;
                        strNewXml          = error.NewRecord;
                        baNewTimestamp     = error.NewTimestamp;
                    }
                }
                if (nErrorCount > 0)
                {
                    return(-1);
                }
            }

            return(1);
        }
 private Object[] GetKeyValues(EntityInfo entityInfo)
 {
     return(entityInfo.ContextProvider.GetKeyValues(entityInfo));
 }
Esempio n. 47
0
    private bool CombatHandler(EntityInfo npc, AiStateInfo info, long deltaTime)
    {
        if (npc.GetSkillStateInfo().IsSkillActivated())
        {
            return(true);
        }

        EntityInfo leader = AiLogicUtility.GetLivingCharacterInfoHelper(npc, info.LeaderID);

        ScriptRuntime.Vector3 srcPos  = npc.GetMovementStateInfo().GetPosition3D();
        ScriptRuntime.Vector3 homePos = ScriptRuntime.Vector3.Zero;
        if (null != leader)
        {
            homePos = GetHomePos(npc.GetMovementStateInfo().FormationIndex, leader);
        }
        float distSqrToHome = Geometry.DistanceSquare(srcPos, homePos);

        if (distSqrToHome > npc.GohomeRange * npc.GohomeRange)
        {
            AiCommand.AiStopPursue(npc);
            info.ChangeToState((int)AiStateId.Gohome);
            return(true);
        }

        ///
        EntityInfo     attackTarget = null;
        SkillStateInfo currSkInfo   = npc.GetSkillStateInfo();
        ///找到可以使用的技能
        SkillInfo skInfo = AiLogicUtility.NpcFindCanUseSkill(npc);

        AiCommand.AiSelectSkill(npc, skInfo);
        if (skInfo == null)
        {
            //没有可以使用的技能就切换到Idle状态
            info.ChangeToState((int)PredefinedAiStateId.Idle);
            return(false);
        }

        CharacterRelation relation =
            (skInfo.TargetType == SkillTargetType.Friend ||
             skInfo.TargetType == SkillTargetType.RandFriend) ?
            CharacterRelation.RELATION_FRIEND :
            CharacterRelation.RELATION_ENEMY;

        attackTarget = AiLogicUtility.GetNearstTargetHelper(
            npc, skInfo.Distance, relation);

        if (attackTarget != null && null != skInfo)   //攻击范围内找到可攻击目标
        {
            info.Target = attackTarget.GetId();
            AiCommand.AiStopPursue(npc);
            AiCommand.AiSkill(npc, skInfo.SkillId); //攻击目标
            return(true);
        }
        attackTarget = AiLogicUtility.GetNearstTargetHelper(
            npc, npc.ViewRange, relation);
        if (attackTarget != null)                                                         //视野范围内找到可攻击目标
        {
            AiCommand.AiPursue(npc, attackTarget.GetMovementStateInfo().GetPosition3D()); // 追赶目标
            return(true);
        }

        currSkInfo.SetCurSkillInfo(0);
        AiCommand.AiStopPursue(npc);
        info.ChangeToState((int)AiStateId.Gohome);
        return(true);
    }
 private EntityEntry HandleDeletedPart1(EntityInfo entityInfo)
 {
     return(null);
 }
        public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime)
        {
            GfxSkillSenderInfo senderObj = sender as GfxSkillSenderInfo;

            if (null == senderObj)
            {
                return(false);
            }
            Scene      scene = senderObj.Scene;
            EntityInfo obj   = senderObj.GfxObj;

            if (obj == null)
            {
                return(false);
            }
            if (curSectionTime < StartTime)
            {
                return(true);
            }
            int senderId   = 0;
            int targetType = scene.EntityController.GetTargetType(senderObj.ActorId, senderObj.ConfigData, senderObj.Seq);
            int impactId   = TriggerUtil.GetSkillImpactId(instance.Variables, senderObj.ConfigData);

            if (senderObj.ConfigData.type == (int)SkillOrImpactType.Skill)
            {
                senderId = senderObj.ActorId;
            }
            else
            {
                senderId = senderObj.TargetActorId;
            }

            float range = 0;

            TableConfig.Skill cfg = senderObj.ConfigData;
            if (null != cfg)
            {
                range = cfg.aoeSize;
            }
            float   angle  = obj.GetMovementStateInfo().GetFaceDir();
            Vector3 center = Geometry.TransformPoint(obj.GetMovementStateInfo().GetPosition3D(), m_RelativeCenter, angle);

            if (!m_IsStarted)
            {
                m_IsStarted = true;
                m_LastPos   = center;
            }
            else if ((center - m_LastPos).LengthSquared() >= 0.25f || StartTime + m_DurationTime < curSectionTime)
            {
                Vector3 c           = (m_LastPos + center) / 2;
                Vector3 angleu      = center - m_LastPos;
                float   queryRadius = range + angleu.Length() / 2;

                int  ct        = 0;
                bool isCollide = false;
                scene.KdTree.Query(c.X, c.Y, c.Z, queryRadius, (float distSqr, KdTreeObject kdTreeObj) => {
                    int targetId = kdTreeObj.Object.GetId();
                    if (targetType == (int)SkillTargetType.Enemy && CharacterRelation.RELATION_ENEMY == scene.EntityController.GetRelation(senderId, targetId) ||
                        targetType == (int)SkillTargetType.Friend && CharacterRelation.RELATION_FRIEND == scene.EntityController.GetRelation(senderId, targetId))
                    {
                        bool isMatch = Geometry.IsCapsuleDiskIntersect(new ScriptRuntime.Vector2(center.X, center.Z), new ScriptRuntime.Vector2(angleu.X, angleu.Z), range, new ScriptRuntime.Vector2(kdTreeObj.Position.X, kdTreeObj.Position.Z), kdTreeObj.Radius);
                        if (isMatch)
                        {
                            isCollide = true;
                            if (!m_SingleHit || !m_Targets.Contains(targetId))
                            {
                                m_Targets.Add(targetId);
                                Dictionary <string, object> args;
                                TriggerUtil.CalcImpactConfig(0, impactId, instance, senderObj.ConfigData, out args);
                                scene.EntityController.SendImpact(senderObj.ConfigData, senderObj.Seq, senderObj.ActorId, senderId, targetId, impactId, args);
                                ++ct;
                                if (senderObj.ConfigData.maxAoeTargetCount <= 0 || ct < senderObj.ConfigData.maxAoeTargetCount)
                                {
                                    return(true);
                                }
                                else
                                {
                                    return(false);
                                }
                            }
                        }
                    }
                    return(true);
                });

                m_LastPos = center;

                if (isCollide && m_FinishOnCollide)
                {
                    return(false);
                }
            }
            if (StartTime + m_DurationTime < curSectionTime)
            {
                instance.StopCurSection();
                return(false);
            }
            return(true);
        }
Esempio n. 50
0
    internal static void Execute(object msg, NetConnection conn)
    {
        Msg_RC_CampChanged _msg = msg as Msg_RC_CampChanged;

        if (null == _msg)
        {
            return;
        }
        if (_msg.obj_id <= 0)
        {
            ClientModule.Instance.CampId = _msg.camp_id;
        }
        else
        {
            EntityInfo obj = ClientModule.Instance.GetEntityById(_msg.obj_id);
            if (null != obj)
            {
                obj.SetCampId(_msg.camp_id);
                Utility.EventSystem.Publish("ui_actor_color", "ui", _msg.obj_id, CharacterRelation.RELATION_FRIEND == EntityInfo.GetRelation(ClientModule.Instance.CampId, _msg.camp_id));
            }
        }
    }
Esempio n. 51
0
        /// <summary>
        /// Connect the related entities based on the foreign key values found in a component type.
        /// This updates the values of the component's properties.
        /// </summary>
        /// <param name="propName">Name of the (component) property of the entity.  May be null if the property is the entity's identifier.</param>
        /// <param name="compType">Type of the component</param>
        /// <param name="entityInfo">Breeze EntityInfo</param>
        /// <param name="meta">Metadata for the entity class</param>
        /// <param name="canUseSession">Whether we can load the related entity via the Session.
        /// If false, we only connect entities that are also in the saveMap</param>
        private void FixupComponentRelationships(string propName, ComponentType compType, EntityInfo entityInfo, IClassMetadata meta, bool canUseSession)
        {
            var    compPropNames = compType.PropertyNames;
            var    compPropTypes = compType.Subtypes;
            object component     = null;

            object[] compValues = null;
            bool     isChanged  = false;

            for (int j = 0; j < compPropNames.Length; j++)
            {
                var compPropType = compPropTypes[j];
                if (compPropType.IsAssociationType && compPropType.IsEntityType)
                {
                    if (compValues == null)
                    {
                        // get the value of the component's subproperties
                        component  = GetPropertyValue(meta, entityInfo.Entity, propName);
                        compValues = compType.GetPropertyValues(component, EntityMode.Poco);
                    }
                    if (compValues[j] == null)
                    {
                        // the related entity is null
                        var relatedEntity = GetRelatedEntity(compPropNames[j], compPropType, entityInfo, meta, canUseSession);
                        if (relatedEntity != null)
                        {
                            compValues[j] = relatedEntity;
                            isChanged     = true;
                        }
                    }
                }
            }
            if (isChanged)
            {
                compType.SetPropertyValues(component, compValues, EntityMode.Poco);
            }
        }
Esempio n. 52
0
 public void UpdateEntity(EntityInfo entityInfo)
 {
     OnUpdateEntity?.Invoke(entityInfo);
 }
    private bool CombatHandler(EntityInfo npc, AiStateInfo info, long deltaTime)
    {
        info.Time += deltaTime;
        if (info.Time > 100)
        {
            info.Time = 0;
        }
        else
        {
            return(true);
        }

        if (npc.GetSkillStateInfo().IsSkillActivated())
        {
            return(true);
        }

        ScriptRuntime.Vector3 srcPos = npc.GetMovementStateInfo().GetPosition3D();
        float distSqrToHome          = Geometry.DistanceSquare(srcPos, info.HomePos);

        if (distSqrToHome > npc.GohomeRange * npc.GohomeRange)
        {
            AiCommand.AiStopPursue(npc);
            info.ChangeToState((int)AiStateId.Gohome);
            return(true);
        }

        ///
        EntityInfo     attackTarget = null;
        SkillStateInfo currSkInfo   = npc.GetSkillStateInfo();
        ///找到可以使用的技能
        SkillInfo skInfo = AiLogicUtility.NpcFindCanUseSkill(npc);

        AiCommand.AiSelectSkill(npc, skInfo);
        if (skInfo == null)
        {
            AiCommand.AiStopPursue(npc);
            info.ChangeToState((int)PredefinedAiStateId.Idle);
            return(false);
        }

        CharacterRelation relation = skInfo.ConfigData.targetType == (int)SkillTargetType.Friend ?
                                     CharacterRelation.RELATION_FRIEND :
                                     CharacterRelation.RELATION_ENEMY;

        attackTarget = AiLogicUtility.GetNearstTargetHelper(
            npc, skInfo.Distance, relation);

        if (attackTarget != null && null != skInfo) //攻击范围内找到可攻击目标
        {
            info.Target = attackTarget.GetId();
            ScriptRuntime.Vector3 targetPos = attackTarget.GetMovementStateInfo().GetPosition3D();
            float dir    = Geometry.GetYRadian(srcPos, targetPos);
            float curDir = npc.GetMovementStateInfo().GetFaceDir();
            if (Mathf.Abs(dir - curDir) > 0.157f)
            {
                npc.GetMovementStateInfo().SetWantedFaceDir(dir);
            }
            else
            {
                AiCommand.AiStopPursue(npc);
                AiCommand.AiSkill(npc, skInfo.SkillId); //攻击目标
            }
            return(true);
        }
        attackTarget = AiLogicUtility.GetNearstTargetHelper(
            npc, npc.ViewRange, relation);
        if (attackTarget != null)                                                         //视野范围内找到可攻击目标
        {
            AiCommand.AiPursue(npc, attackTarget.GetMovementStateInfo().GetPosition3D()); // 追赶目标
            return(true);
        }

        currSkInfo.SetCurSkillInfo(0);
        AiCommand.AiStopPursue(npc);
        return(true);
    }
Esempio n. 54
0
            private TrackedItem GetTrackedItem(EntityInfo entity)
            {
                ITrackedTable table = (ITrackedTable)this.GetTable(entity.Mapping);

                return(table.GetTrackedItem(entity.Instance));
            }
        //private static EntityType GetEntityType(MetadataWorkspace mws, Type entityType) {
        //  EntityType et =
        //    mws.GetItems<EntityType>(DataSpace.OSpace)
        //      .Single(x => x.Name == entityType.Name);
        //  return et;
        //}

        private static void UpdateOriginalValues(EntityEntry entry, EntityInfo entityInfo)
        {
            var originalValuesMap = entityInfo.OriginalValuesMap;

            if (originalValuesMap == null || originalValuesMap.Keys.Count == 0)
            {
                return;
            }



            originalValuesMap.ToList().ForEach(kvp => {
                var propertyName  = kvp.Key;
                var originalValue = kvp.Value;

                try {
                    var propEntry = entry.Property(propertyName);
                    // old code
                    // entry.SetModifiedProperty(propertyName);
                    propEntry.IsModified = true;

                    if (originalValue is JObject)
                    {
                        // only really need to perform updating original values on key properties
                        // and a complex object cannot be a key.
                    }
                    else
                    {
                        // old code
                        // var originalValuesRecord = entry.OriginalValues;
                        //var ordinal = originalValuesRecord.GetOrdinal(propertyName);
                        //var fieldType = originalValuesRecord.GetFieldType(ordinal);
                        var fieldType = propEntry.Metadata.ClrType;
                        var originalValueConverted = ConvertValue(originalValue, fieldType);

                        if (originalValueConverted == null)
                        {
                            // bug - hack because of bug in EF - see
                            // http://social.msdn.microsoft.com/Forums/nl/adodotnetentityframework/thread/cba1c425-bf82-4182-8dfb-f8da0572e5da


                            // old code
                            // var temp = entry.CurrentValues[ordinal];
                            //entry.CurrentValues.SetDBNull(ordinal);
                            //entry.ApplyOriginalValues(entry.Entity);
                            //entry.CurrentValues.SetValue(ordinal, temp);
                            var temp = propEntry.CurrentValue;
                            propEntry.CurrentValue  = DBNull.Value;
                            propEntry.OriginalValue = temp;
                            propEntry.CurrentValue  = temp;
                        }
                        else
                        {
                            propEntry.OriginalValue = originalValueConverted;
                        }
                    }
                } catch (Exception e) {
                    if (e.Message.Contains(" part of the entity's key"))
                    {
                        throw;
                    }
                    else
                    {
                        // this can happen for "custom" data entity properties.
                    }
                }
            });
        }
Esempio n. 56
0
 public CreateTemplate(EntityInfo model, string applicationId) : base(model, applicationId)
 {
     _model = model;
 }
Esempio n. 57
0
 /// <summary>
 /// Recupera o nome associado com a propridade
 /// </summary>
 /// <param name="entity"></param>
 /// <param name="propertyName"></param>
 /// <returns></returns>
 public override ITranslatedName GetName(EntityInfo entity, string propertyName)
 {
     return(this.GetName(entity, propertyName, false));
 }
Esempio n. 58
0
        private async Task UpdateAsyncInternal<T>(IEnumerable<T> entities, EntityInfo mapping)
        {
            var conn = NpgsqlHelper.GetNpgsqlConnection(context);
            var connOpenedHere = await EnsureConnectedAsync(conn);
            var transaction = NpgsqlHelper.EnsureOrStartTransaction(context, DefaultIsolationLevel);

            try
            {
                // 0. Prepare variables
                var dataColumns = mapping.ClientDataWithKeysColumnNames;
                var tableName = mapping.TableNameQualified;
                var tempTableName = GetUniqueName("_temp_");
                var codeBuilder = (NpgsqlBulkCodeBuilder<T>)mapping.CodeBuilder;

                // 1. Create temp table 
                var sql = $"CREATE TEMP TABLE {tempTableName} ON COMMIT DROP AS {mapping.SelectSourceForUpdateQuery} LIMIT 0";
                //var sql = $"CREATE TABLE {tempTableName} AS {mapping.SelectSourceForUpdateQuery} LIMIT 0";
                await context.Database.ExecuteSqlCommandAsync(sql);

                // 2. Import into temp table
                using (var importer = conn.BeginBinaryImport($"COPY {tempTableName} ({mapping.CopyColumnsForUpdateQueryPart}) FROM STDIN (FORMAT BINARY)"))
                {
                    foreach (var item in entities)
                    {
                        importer.StartRow();
                        codeBuilder.ClientDataWithKeyWriterAction(item, importer);
                    }
                    importer.Complete();
                }

                // 3. Insert into real table from temp one
                foreach (var part in mapping.UpdateQueryParts)
                {
                    // 3.a Needs to accure lock
                    if (LockLevelOnUpdate != TableLockLevel.NoLock)
                    {
                        sql = $"LOCK TABLE {part.TableNameQualified} IN {LockLevelToString(LockLevelOnUpdate)} MODE;";
                        await context.Database.ExecuteSqlCommandAsync(sql);
                    }
                    sql = $"UPDATE {part.TableNameQualified} SET {part.SetClause} FROM {tempTableName} as source WHERE {part.WhereClause}";
                    await context.Database.ExecuteSqlCommandAsync(sql);
                }

                // 5. Commit
                transaction?.Commit();
            }
            catch
            {
                try
                {
                    transaction?.Rollback();
                }
                catch { }

                throw;
            }
            finally
            {
                if (connOpenedHere)
                    conn.Close();
            }
        }
Esempio n. 59
0
        protected override void Initialize()
        {
            Logger.Log("Tiers+ v" + Info.Mod.Version);
            Logger.Log("Plasmathrower v" + Info.Mod.Version);
            PlasmaCannon = new ItemInfo(ItemType.WEAPON, "Plasmathrower", "", GadgetCoreAPI.LoadTexture2D("items/PlasmaCannonItem"), Stats: new EquipStats(5, 0, 10, 10, 0, 0), HeldTex: GadgetCoreAPI.LoadTexture2D("items/PlasmaCannonHeld"));
            PlasmaCannon.SetWeaponInfo(new float[] { 0, 0, 0.5f, 0.25f, 0, 0 }, GadgetCoreAPI.GetAttackSound(497));
            PlasmaCannon.Register("PlasmaCannon");
            GameObject PlasmaCannonProj = UnityEngine.Object.Instantiate(GadgetCoreAPI.GetWeaponProjectileResource(471));

            PlasmaCannonProj.GetComponentInChildren <ParticleSystemRenderer>().material = new Material(Shader.Find("Particles/Additive"))
            {
                mainTexture = GadgetCoreAPI.LoadTexture2D("CustomParticleTextureFileName"),
            };
            PlasmaCannonProj.GetComponentInChildren <MeshRenderer>().material = new Material(Shader.Find("Unlit/Transparent Cutout"))
            {
                mainTexture = GadgetCoreAPI.LoadTexture2D("items/PlasmaCannonProj"),
            };
            Vector3 particleSystemPos = PlasmaCannonProj.transform.Find("Particle System").localPosition;

            UnityEngine.Object.DestroyImmediate(PlasmaCannonProj.transform.Find("Particle System").gameObject);
            GameObject customParticleSystem = UnityEngine.Object.Instantiate(PlasmaCannonProj.GetComponent <Projectile>().particleAtalanta);

            customParticleSystem.name = "Particle System";
            customParticleSystem.transform.SetParent(PlasmaCannonProj.transform);
            customParticleSystem.transform.localPosition = particleSystemPos;
            customParticleSystem.SetActive(true);
            customParticleSystem.GetComponent <ParticleSystemRenderer>().material = new Material(Shader.Find("Particles/Additive"))
            {
                mainTexture = GadgetCoreAPI.LoadTexture2D("items/particleplasma"),
            };
            GadgetCoreAPI.AddCustomResource("proj/shot" + PlasmaCannon.GetID(), PlasmaCannonProj);


            PlasmaCannon.OnAttack += TripleShot;
            //plasmacannon
            ItemInfo
                particleAccelerator = new ItemInfo(ItemType.WEAPON, "Particle Accelerator", "", GadgetCoreAPI.LoadTexture2D("items/ParticleAccItem"), Stats: new EquipStats(3, 0, 7, 0, 7, 3), HeldTex: GadgetCoreAPI.LoadTexture2D("items/ParticleAccHeld"));

            particleAccelerator.SetWeaponInfo(new float[] { 0, 0, 1.5f, 0, 1, 0 }, GadgetCoreAPI.GetAttackSound(426));
            particleAccelerator.Register("ParticleAcc");
            GameObject particleAccProj = UnityEngine.Object.Instantiate(GadgetCoreAPI.GetWeaponProjectileResource(427));

            GadgetCoreAPI.AddCustomResource("proj/shot" + particleAccelerator.GetID(), particleAccProj);
            particleAccProj.GetComponent <Projectile>().speed = 45;
            particleAccelerator.OnAttack += particleAccelerator.ShootGun;

            NebulaCannon = new ItemInfo(ItemType.WEAPON, "Nebular Grenadier", "", GadgetCoreAPI.LoadTexture2D("items/NebulaCannonItem"), Stats: new EquipStats(0, 0, 10, 10, 0, 0), HeldTex: GadgetCoreAPI.LoadTexture2D("items/NebulaCannonHeld"));
            NebulaCannon.SetWeaponInfo(new float[] { 0, 0, 0.5f, 2, 0, 0 }, GadgetCoreAPI.GetAttackSound(473));
            NebulaCannon.Register("NebulaCannon");
            NebulaCannon.OnAttack += CustomPlasma;

            ItemInfo plantain = new ItemInfo(ItemType.WEAPON, "Plantain", "", GadgetCoreAPI.LoadTexture2D("items/PlantainItem"), Stats: new EquipStats(0, 0, 0, 0, 10, 7), HeldTex: GadgetCoreAPI.LoadTexture2D("items/PlantainHeld"));

            plantain.SetWeaponInfo(new float[] { 0, 0, 0, 0, 1.5f, 0.5f }, GadgetCoreAPI.GetAttackSound(529));
            plantain.Register("Plantain");
            GameObject plantainProj = UnityEngine.Object.Instantiate(GadgetCoreAPI.GetWeaponProjectileResource(596));

            GadgetCoreAPI.AddCustomResource("proj/shot" + plantain.GetID(), plantainProj);
            plantainProj.GetComponent <Projectile>().speed = 45;
            plantainProj.GetComponentInChildren <MeshRenderer>().material = new Material(Shader.Find("Unlit/Transparent Cutout"))
            {
                mainTexture = GadgetCoreAPI.LoadTexture2D("items/PlantainItem"),
            };
            plantain.OnAttack += plantain.CastStaff;

            ItemInfo closeCombatant = new ItemInfo(ItemType.WEAPON, "Close Combatant", "", GadgetCoreAPI.LoadTexture2D("items/ParticleGauntlet"), Stats: new EquipStats(0, 8, 0, 0, 7, 0), HeldTex: GadgetCoreAPI.LoadTexture2D("items/Blank"));

            closeCombatant.SetWeaponInfo(new float[] { 0, 0.5f, 0, 0, 1f, 0 }, GadgetCoreAPI.GetAttackSound(523));
            closeCombatant.Register("CloseCombat");
            GameObject closeCombatProj = UnityEngine.Object.Instantiate(GadgetCoreAPI.GetWeaponProjectileResource(523));

            GadgetCoreAPI.AddCustomResource("proj/shot" + closeCombatant.GetID(), closeCombatProj);
            closeCombatProj.GetComponent <Projectile>().speed = 0;
            closeCombatant.OnAttack += closeCombatant.CastGauntlet;
            closeCombatant.OnAttack += closeCombatant.CastGauntlet;
            closeCombatant.OnAttack += closeCombatant.CastGauntlet;
            closeCombatant.OnAttack += closeCombatant.CastGauntlet;

            GameObject proj = (GameObject)UnityEngine.Object.Instantiate((GameObject)Resources.Load("proj/wyvern"));

            proj.GetComponent <HazardScript>().damage = 40;
            GadgetCoreAPI.AddCustomResource("proj/wyvernCustom", proj);

            GameObject proj2 = (GameObject)UnityEngine.Object.Instantiate((GameObject)Resources.Load("proj/spongeProj"));

            proj2.GetComponent <HazardScript>().damage = 45;
            GadgetCoreAPI.AddCustomResource("proj/spongeProjCustom", proj2);

            //projectiles
            PlasmaLance = new PlasmaLanceItemInfo(ItemType.WEAPON, "Plasma Lance", "", GadgetCoreAPI.LoadTexture2D("items/Plasmaspearitem"), Stats: new EquipStats(5, 20, 0, 0, 0, 0), HeldTex: GadgetCoreAPI.LoadTexture2D("items/PlasmaSpear"));
            PlasmaLance.SetWeaponInfo(new float[] { 2f, 4f, 0, 0, 0, 0 }, GadgetCoreAPI.GetAttackSound(367));
            PlasmaLance.Register("PlasmaLance");
            PlasmaLance.OnAttack += PlasmaLance.ThrustLance;
            //plasmalance
            PlasmaArmor = new ItemInfo(ItemType.ARMOR, "Plasmatic Armor", "", GadgetCoreAPI.LoadTexture2D("items/PlasmaArmor"), Stats: new EquipStats(7, 4, 8, 4, 8, 4), BodyTex: GadgetCoreAPI.LoadTexture2D("Items/PlasmaArmorEquip"), ArmTex: GadgetCoreAPI.LoadTexture2D("items/PlasmaHand"));
            PlasmaArmor.Register("PlasmaArmor");
            PlasmaHelmet = new ItemInfo(ItemType.HELMET, "Plasmatic Helmet", "", GadgetCoreAPI.LoadTexture2D("items/PlasmaHelm"), Stats: new EquipStats(8, 4, 4, 8, 4, 8), HeadTex: GadgetCoreAPI.LoadTexture2D("items/PlasmaHelmEquip"));
            PlasmaHelmet.Register("PlasmaHelmet");
            ItemInfo NexusArmor = new ItemInfo(ItemType.ARMOR, "Nexus Armor", "", GadgetCoreAPI.LoadTexture2D("items/NexusArmor"), Stats: new EquipStats(6, 5, 5, 5, 8, 8), BodyTex: GadgetCoreAPI.LoadTexture2D("Items/NexusArmor"), ArmTex: GadgetCoreAPI.LoadTexture2D("items/NexusHand"));

            NexusArmor.Register("NexusArmor");
            ItemInfo NexusHelmet = new ItemInfo(ItemType.HELMET, "Nexus Helmet", "", GadgetCoreAPI.LoadTexture2D("items/NexusHelmItem"), Stats: new EquipStats(4, 4, 4, 4, 10, 10), HeadTex: GadgetCoreAPI.LoadTexture2D("items/NexusHelm"));

            NexusHelmet.Register("NexusHelmet");
            PlasmaShield = new ItemInfo(ItemType.OFFHAND, "Nexus Shield", "", GadgetCoreAPI.LoadTexture2D("items/NexusShield"), Stats: new EquipStats(5, 3, 3, 3, 3, 8), HeldTex: GadgetCoreAPI.LoadTexture2D("items/NexusShield"));
            PlasmaShield.Register("NexusShield");
            ItemInfo NexusShield = new ItemInfo(ItemType.OFFHAND, "Plasmatic Shield", "", GadgetCoreAPI.LoadTexture2D("items/PlasmaShield"), Stats: new EquipStats(7, 5, 5, 5, 5, 5), HeldTex: GadgetCoreAPI.LoadTexture2D("items/PlasmaShield"));

            NexusShield.Register("Plasmahield");
            //equipment
            ItemInfo   SliverCard       = new ItemInfo(ItemType.GENERIC, "Sliver Card", "A rare card \nCan be placed \nIn your ship", GadgetCoreAPI.LoadTexture2D("Cards/SliverCard")).Register("Slivercard");
            GameObject SliverCardPlaced = UnityEngine.Object.Instantiate(GadgetCoreAPI.GetPropResource(2518));
            TileInfo   SliverCardTile   = new TileInfo(TileType.NONSOLID, GadgetCoreAPI.LoadTexture2D("Cards/SliverCardPlaced"), SliverCardPlaced, SliverCard).Register("SliverCardPlaced");

            SliverCardPlaced.GetComponentInChildren <MeshRenderer>().material = new Material(Shader.Find("Unlit/Transparent Cutout"))
            {
                mainTexture = GadgetCoreAPI.LoadTexture2D("Cards/SliverCardPlaced"),
            };
            ItemInfo   GhostCard       = new ItemInfo(ItemType.GENERIC, "Ghostshroom Card", "A rare card \nCan be placed \nIn your ship", GadgetCoreAPI.LoadTexture2D("Cards/GhostShroomCard")).Register("Ghostcard");
            GameObject GhostCardPlaced = UnityEngine.Object.Instantiate(GadgetCoreAPI.GetPropResource(2518));
            TileInfo   GhostCardTile   = new TileInfo(TileType.NONSOLID, GadgetCoreAPI.LoadTexture2D("Cards/GhostShroomCardPlaced"), GhostCardPlaced, GhostCard).Register("GhostCardPlaced");

            GhostCardPlaced.GetComponentInChildren <MeshRenderer>().material = new Material(Shader.Find("Unlit/Transparent Cutout"))
            {
                mainTexture = GadgetCoreAPI.LoadTexture2D("Cards/GhostShroomCardPlaced"),
            };
            ItemInfo   GuardianCard       = new ItemInfo(ItemType.GENERIC, "Guardian Card", "A rare card \nCan be placed \nIn your ship", GadgetCoreAPI.LoadTexture2D("Cards/GuardianCard")).Register("Guardcard");
            GameObject GuardianCardPlaced = UnityEngine.Object.Instantiate(GadgetCoreAPI.GetPropResource(2518));
            TileInfo   GuardianCardTile   = new TileInfo(TileType.NONSOLID, GadgetCoreAPI.LoadTexture2D("Cards/GuardianCardPlaced"), GuardianCardPlaced, GuardianCard).Register("GuardianCardPlaced");

            GuardianCardPlaced.GetComponentInChildren <MeshRenderer>().material = new Material(Shader.Find("Unlit/Transparent Cutout"))
            {
                mainTexture = GadgetCoreAPI.LoadTexture2D("Cards/GuardianCardPlaced"),
            };
            ItemInfo   BlankCard       = new ItemInfo(ItemType.GENERIC, "Blank Card", "A rare card \nCard Mimic.", GadgetCoreAPI.LoadTexture2D("Cards/BlankCard")).Register("Blankcard");
            GameObject BlankCardPlaced = UnityEngine.Object.Instantiate(GadgetCoreAPI.GetPropResource(2518));
            TileInfo   BlankCardTile   = new TileInfo(TileType.NONSOLID, GadgetCoreAPI.LoadTexture2D("Cards/BlankCardPlaced"), BlankCardPlaced, BlankCard).Register("BlankCardPlaced");

            BlankCardPlaced.GetComponentInChildren <MeshRenderer>().material = new Material(Shader.Find("Unlit/Transparent Cutout"))
            {
                mainTexture = GadgetCoreAPI.LoadTexture2D("Cards/BlankCardPlaced"),
            };
            //cards
            MykonogreToken = new ItemInfo(ItemType.EMBLEM, "Mykonogre Token", "A token dropped from \n Mykonogre \n used to craft items at the universal crafter.", GadgetCoreAPI.LoadTexture2D("MykonogreToken"));
            MykonogreToken.Register("MykonogreToken");

            FellbugToken = new ItemInfo(ItemType.EMBLEM, "Fellbug Token", "A token dropped from \n Fellbug. \n Used to craft items at the universal crafter.", GadgetCoreAPI.LoadTexture2D("FellbugToken"));
            FellbugToken.Register("FellbugToken");

            GladriaToken = new ItemInfo(ItemType.EMBLEM, "Gladria Token", "A token dropped from \n Glaedria. \n used to craft items at the universal crafter.", GadgetCoreAPI.LoadTexture2D("GladriaToken"));
            GladriaToken.Register("GladriaToken");
            //tokens
            //FellbugToken.AddToLootTable("entity:fellbug", 1.0f, 1);
            //GladriaToken.AddToLootTable("entity:glaedria", 1.0f, 1);
            //loot pools
            //plasmathrower
            ItemInfo energiteItem = new ItemInfo(ItemType.LOOT | ItemType.ORE | ItemType.TIER7, "Energite", "LOOT - ORE\nTIER: 7",
                                                 GadgetCoreAPI.LoadTexture2D("Items/Energite")).Register("energyore");
            ItemInfo plasmaFernItem = new ItemInfo(ItemType.LOOT | ItemType.PLANT | ItemType.TIER7, "Plasma Fern", "LOOT - PLANT\nTIER: 7",
                                                   GadgetCoreAPI.LoadTexture2D("Items/PlasmaFern")).Register("fern");
            ItemInfo powerCrystalItem = new ItemInfo(ItemType.LOOT | ItemType.MONSTER | ItemType.TIER7, "Power Crystal", "LOOT - MONSTER PART\nTIER: 7",
                                                     GadgetCoreAPI.LoadTexture2D("Items/PowerCrystal")).Register("powercrystal");
            ItemInfo lightingBugItem = new ItemInfo(ItemType.LOOT | ItemType.BUG | ItemType.TIER7, "Lightning Bug", "LOOT - BUG\nTIER: 7",
                                                    GadgetCoreAPI.LoadTexture2D("Items/LightningBug")).Register("lightningbug");

            //Resin
            //Needle
            //Worm Tooth
            //Bookworm Larva
            ItemInfo resinItem = new ItemInfo(ItemType.LOOT | ItemType.ORE | ItemType.TIER7, "Resin", "LOOT - ORE\nTIER: 8",
                                              GadgetCoreAPI.LoadTexture2D("Items/Energite")).Register("resin");
            ItemInfo pineNeedleItem = new ItemInfo(ItemType.LOOT | ItemType.PLANT | ItemType.TIER7, "Pine Needle", "LOOT - PLANT\nTIER: 8",
                                                   GadgetCoreAPI.LoadTexture2D("Items/PlasmaFern")).Register("pineneedle");
            ItemInfo WormToothItem = new ItemInfo(ItemType.LOOT | ItemType.MONSTER | ItemType.TIER7, "Worm Tooth", "LOOT - MONSTER PART\nTIER: 8",
                                                  GadgetCoreAPI.LoadTexture2D("Items/PowerCrystal")).Register("wormtooth");
            ItemInfo bookwormLarvaItem = new ItemInfo(ItemType.LOOT | ItemType.BUG | ItemType.TIER7, "Bookworm Larva", "LOOT - BUG\nTIER: 8",
                                                      GadgetCoreAPI.LoadTexture2D("Items/LightningBug")).Register("bookwormlarva");


            ItemInfo energiteEmblemItem = new ItemInfo(ItemType.EMBLEM | ItemType.ORE | ItemType.TIER7, "Energite Emblem", "Tier 7.\nA shiny Token. Used\nto forge items.",
                                                       GadgetCoreAPI.LoadTexture2D("Items/EnergiteEmblem")).Register("energyemblem");
            ItemInfo fernEmblemItem = new ItemInfo(ItemType.EMBLEM | ItemType.PLANT | ItemType.TIER7, "Fern Emblem", "Tier 7.\nA shiny Token. Used\nto forge items.",
                                                   GadgetCoreAPI.LoadTexture2D("Items/FernEmblem")).Register("fernemblem");
            ItemInfo powerEmblemItem = new ItemInfo(ItemType.EMBLEM | ItemType.MONSTER | ItemType.TIER7, "Power Emblem", "Tier 7.\nA shiny Token. Used\nto forge items.",
                                                    GadgetCoreAPI.LoadTexture2D("Items/PowerEmblem")).Register("poweremblem");
            ItemInfo lightingEmblemItem = new ItemInfo(ItemType.EMBLEM | ItemType.BUG | ItemType.TIER7, "Lightning Emblem", "Tier 7.\nA shiny Token. Used\nto forge items.",
                                                       GadgetCoreAPI.LoadTexture2D("Items/LightningEmblem")).Register("lightningemblem");

            ItemInfo plasmaTracerItem = new ItemInfo(ItemType.CONSUMABLE, "Plasma Tracer", "Grants 3 portal uses to\nThe Plasma Zone.",
                                                     GadgetCoreAPI.LoadTexture2D("Items/PlasmaTracer"), 32).Register();

            ItemInfo healthPack4Item = new ItemInfo(ItemType.CONSUMABLE, "Health Pack IV", "Restores 18 Health.",
                                                    GadgetCoreAPI.LoadTexture2D("Items/HealthPack4")).Register();

            ItemInfo TydusRing  = new ItemInfo(ItemType.RING, "Tydus Ring", "", GadgetCoreAPI.GetItemMaterial(909), Stats: new EquipStats(0, 0, 3, 3, 0, 0)).Register(909);
            ItemInfo OwainPearl = new ItemInfo(ItemType.RING, "Owain's Pearl", "", GadgetCoreAPI.LoadTexture2D("Items/OwainPearl"), Stats: new EquipStats(2, 1, 1, 1, 1, 1)).Register("OwainRing", 908);
            ItemInfo VaatiBadge = new ItemInfo(ItemType.RING, "Vaati Badge", "", GadgetCoreAPI.GetItemMaterial(910), Stats: new EquipStats(2, 0, 2, 0, 2, 1)).Register(910);

            healthPack4Item.OnUse += (slot) =>
            {
                InstanceTracker.GameScript.GetComponent <AudioSource>().PlayOneShot((AudioClip)Resources.Load("Au/drink"), Menuu.soundLevel / 10f);
                InstanceTracker.GameScript.RecoverHP(18);
                return(true);
            };
            ItemInfo manaPack4Item = new ItemInfo(ItemType.CONSUMABLE, "Mana Pack IV", "Restores 50 Mana.",
                                                  GadgetCoreAPI.LoadTexture2D("Items/ManaPack4")).Register();

            manaPack4Item.OnUse += (slot) =>
            {
                InstanceTracker.GameScript.GetComponent <AudioSource>().PlayOneShot((AudioClip)Resources.Load("Au/drink"), Menuu.soundLevel / 10f);
                InstanceTracker.GameScript.RecoverMana(50);
                return(true);
            };
            ItemInfo energyPack4Item = new ItemInfo(ItemType.CONSUMABLE, "Energy Pack IV", "Restores 100 Stamina.\nGrants a temporary\nspeed boost.",
                                                    GadgetCoreAPI.LoadTexture2D("Items/EnergyPack4")).Register();

            energyPack4Item.OnUse += (slot) =>
            {
                InstanceTracker.GameScript.GetComponent <AudioSource>().PlayOneShot((AudioClip)Resources.Load("Au/drink"), Menuu.soundLevel / 10f);
                InstanceTracker.GameScript.RecoverStamina(100);
                InstanceTracker.GameScript.StartCoroutine(EnergyPackSpeedBoost(15, 10));
                return(true);
            };

            GadgetCoreAPI.AddAlchemyStationRecipe(Tuple.Create(plasmaFernItem.GetID(), powerCrystalItem.GetID(), lightingBugItem.GetID()), new Item(healthPack4Item.GetID(), 1, 0, 0, 0, new int[3], new int[3]), 2);
            GadgetCoreAPI.AddAlchemyStationRecipe(Tuple.Create(plasmaFernItem.GetID(), lightingBugItem.GetID(), powerCrystalItem.GetID()), new Item(manaPack4Item.GetID(), 1, 0, 0, 0, new int[3], new int[3]), 2);
            GadgetCoreAPI.AddAlchemyStationRecipe(Tuple.Create(lightingBugItem.GetID(), plasmaFernItem.GetID(), powerCrystalItem.GetID()), new Item(energyPack4Item.GetID(), 1, 0, 0, 0, new int[3], new int[3]), 2);
            GadgetCoreAPI.AddAlchemyStationRecipe(Tuple.Create(lightingBugItem.GetID(), powerCrystalItem.GetID(), plasmaFernItem.GetID()), new Item(63, 4, 0, 0, 0, new int[3], new int[3]), 3);

            ((CraftMenuInfo)MenuRegistry.Singleton["Gadget Core:Crafter Menu"]).AddCraftPerformer(CraftMenuInfo.CreateSimpleCraftPerformer(
                                                                                                      Tuple.Create(new int[] { 136, 74, 136 }, new Item(plasmaTracerItem.GetID(), 1, 0, 0, 0, new int[3], new int[3]), 0)
                                                                                                      ));
            ((CraftMenuInfo)MenuRegistry.Singleton["Gadget Core:Crafter Menu"]).AddCraftPerformer(CraftMenuInfo.CreateSimpleCraftPerformer(Tuple.Create(new int[] { fernEmblemItem.GetID(), powerEmblemItem.GetID(), energiteEmblemItem.GetID() }, new Item(PlasmaCannon.GetID(), 1, 0, 3, 0, new int[3], new int[3]), 0)));
            ((CraftMenuInfo)MenuRegistry.Singleton["Gadget Core:Crafter Menu"]).AddCraftPerformer(CraftMenuInfo.CreateSimpleCraftPerformer(Tuple.Create(new int[] { energiteEmblemItem.GetID(), fernEmblemItem.GetID(), lightingEmblemItem.GetID() }, new Item(PlasmaShield.GetID(), 1, 0, 3, 0, new int[3], new int[3]), 0)));
            //((CraftMenuInfo)MenuRegistry.Singleton["Gadget Core:Crafter Menu"]).AddCraftPerformer(CraftMenuInfo.CreateSimpleCraftPerformer(Tuple.Create(new int[] { energiteEmblemItem.GetID(), powerEmblemItem.GetID(), fernEmblemItem.GetID() }, new Item(PlasmaLance.GetID(), 1, 0, 3, 0, new int[3], new int[3]), 0)));
            ((CraftMenuInfo)MenuRegistry.Singleton["Gadget Core:Crafter Menu"]).AddCraftPerformer(CraftMenuInfo.CreateSimpleCraftPerformer(Tuple.Create(new int[] { energiteEmblemItem.GetID(), lightingEmblemItem.GetID(), fernEmblemItem.GetID() }, new Item(PlasmaArmor.GetID(), 1, 0, 3, 0, new int[3], new int[3]), 0)));
            ((CraftMenuInfo)MenuRegistry.Singleton["Gadget Core:Crafter Menu"]).AddCraftPerformer(CraftMenuInfo.CreateSimpleCraftPerformer(Tuple.Create(new int[] { fernEmblemItem.GetID(), lightingEmblemItem.GetID(), energiteEmblemItem.GetID() }, new Item(PlasmaHelmet.GetID(), 1, 0, 3, 0, new int[3], new int[3]), 0)));
            ((CraftMenuInfo)MenuRegistry.Singleton["Gadget Core:Crafter Menu"]).AddCraftPerformer(CraftMenuInfo.CreateSimpleCraftPerformer(Tuple.Create(new int[] { powerEmblemItem.GetID(), lightingEmblemItem.GetID(), energiteEmblemItem.GetID() }, new Item(NebulaCannon.GetID(), 1, 0, 3, 0, new int[3], new int[3]), 0)));
            ((CraftMenuInfo)MenuRegistry.Singleton["Gadget Core:Crafter Menu"]).AddCraftPerformer(CraftMenuInfo.CreateSimpleCraftPerformer(Tuple.Create(new int[] { fernEmblemItem.GetID(), energiteEmblemItem.GetID(), powerEmblemItem.GetID() }, new Item(particleAccelerator.GetID(), 1, 0, 3, 0, new int[3], new int[3]), 0)));
            ((CraftMenuInfo)MenuRegistry.Singleton["Gadget Core:Crafter Menu"]).AddCraftPerformer(CraftMenuInfo.CreateSimpleCraftPerformer(Tuple.Create(new int[] { fernEmblemItem.GetID(), powerEmblemItem.GetID(), lightingEmblemItem.GetID() }, new Item(NexusHelmet.GetID(), 1, 0, 3, 0, new int[3], new int[3]), 0)));
            ((CraftMenuInfo)MenuRegistry.Singleton["Gadget Core:Crafter Menu"]).AddCraftPerformer(CraftMenuInfo.CreateSimpleCraftPerformer(Tuple.Create(new int[] { powerEmblemItem.GetID(), fernEmblemItem.GetID(), lightingEmblemItem.GetID() }, new Item(NexusArmor.GetID(), 1, 0, 3, 0, new int[3], new int[3]), 0)));
            ((CraftMenuInfo)MenuRegistry.Singleton["Gadget Core:Crafter Menu"]).AddCraftPerformer(CraftMenuInfo.CreateSimpleCraftPerformer(Tuple.Create(new int[] { lightingEmblemItem.GetID(), fernEmblemItem.GetID(), powerEmblemItem.GetID() }, new Item(NexusShield.GetID(), 1, 0, 3, 0, new int[3], new int[3]), 0)));
            ((CraftMenuInfo)MenuRegistry.Singleton["Gadget Core:Crafter Menu"]).AddCraftPerformer(CraftMenuInfo.CreateSimpleCraftPerformer(Tuple.Create(new int[] { powerEmblemItem.GetID(), energiteEmblemItem.GetID(), fernEmblemItem.GetID() }, new Item(plantain.GetID(), 1, 0, 3, 0, new int[3], new int[3]), 0)));
            GadgetCoreAPI.AddCreationMachineRecipe(powerEmblemItem.GetID(), new Item(1030, 1, 0, 0, 0, new int[3], new int[3]));
            GadgetCoreAPI.AddCreationMachineRecipe(energiteEmblemItem.GetID(), new Item(909, 1, 0, 0, 0, new int[3], new int[3]));
            GadgetCoreAPI.AddCreationMachineRecipe(fernEmblemItem.GetID(), new Item(908, 1, 0, 0, 0, new int[3], new int[3]));
            GadgetCoreAPI.AddCreationMachineRecipe(lightingEmblemItem.GetID(), new Item(910, 1, 0, 0, 0, new int[3], new int[3]));
            GadgetCoreAPI.AddAlchemyStationRecipe(Tuple.Create(21, 31, 11), new Item(64, 1, 0, 0, 0, new int[3], new int[3]), 3);
            GadgetCoreAPI.AddAlchemyStationRecipe(Tuple.Create(32, 22, 12), new Item(68, 1, 0, 0, 0, new int[3], new int[3]), 3);
            GadgetCoreAPI.AddAlchemyStationRecipe(Tuple.Create(33, 23, 13), new Item(69, 1, 0, 0, 0, new int[3], new int[3]), 3);
            GadgetCoreAPI.AddAlchemyStationRecipe(Tuple.Create(34, 24, 14), new Item(63, 1, 0, 0, 0, new int[3], new int[3]), 3);
            //crafting recipes

            ObjectInfo EnergiteOre      = new ObjectInfo(ObjectType.ORE, new Item(energiteItem.GetID(), 1, 0, 0, 0, new int[3], new int[3]), 1, GadgetCoreAPI.LoadTexture2D("Planets/Plasma Zone/Energite")).Register("TestObject");
            ObjectInfo PlasmaFern       = new ObjectInfo(ObjectType.PLANT, new Item(plasmaFernItem.GetID(), 1, 0, 0, 0, new int[3], new int[3]), 1, GadgetCoreAPI.LoadTexture2D("Planets/Plasma Zone/Fern")).Register("PlasmaFern");
            ObjectInfo LightningBugTree = new ObjectInfo(ObjectType.BUGSPOT, new Item(lightingBugItem.GetID(), 1, 0, 0, 0, new int[3], new int[3]), 1, GadgetCoreAPI.LoadTexture2D("Planets/Plasma Zone/LightningBugNode"), GadgetCoreAPI.LoadTexture2D("Planets/Plasma Zone/LightningBugBody"), GadgetCoreAPI.LoadTexture2D("Planets/Plasma Zone/LightningBugWing")).Register("LightningBugTree");
            GameObject ParticleDragon   = UnityEngine.Object.Instantiate(GadgetCoreAPI.GetEntityResource("wyvern"));

            ParticleDragon.name = "particleWyvern";
            UnityEngine.Object.Destroy(ParticleDragon.GetComponent <WyvernScript>());
            ParticleDragon.AddComponent <ParticleWyvernScript>();
            ParticleDragon.transform.Find("e").Find("wyvern").Find("Plane").GetComponent <MeshRenderer>().material = new Material(Shader.Find("Unlit/Transparent Cutout"))
            {
                mainTexture = GadgetCoreAPI.LoadTexture2D("enemies/particlewyvernhead"),
            };
            ParticleDragon.transform.Find("e").Find("wyvern").Find("Plane_001").GetComponent <MeshRenderer>().material = new Material(Shader.Find("Unlit/Transparent Cutout"))
            {
                mainTexture = GadgetCoreAPI.LoadTexture2D("enemies/particlewyvernbody"),
            };
            ParticleDragon.transform.Find("e").Find("wyvern").Find("Plane_002").GetComponent <MeshRenderer>().material = new Material(Shader.Find("Unlit/Transparent Cutout"))
            {
                mainTexture = GadgetCoreAPI.LoadTexture2D("enemies/particlewyverntail"),
            };
            ParticleDragon.transform.Find("e").Find("wyvern").Find("Plane_003").GetComponent <MeshRenderer>().material = new Material(Shader.Find("Unlit/Transparent Cutout"))
            {
                mainTexture = GadgetCoreAPI.LoadTexture2D("enemies/particlewyvernwing"),
            };
            ParticleDragon.transform.Find("e").Find("wyvern").Find("Plane_004").GetComponent <MeshRenderer>().material = new Material(Shader.Find("Unlit/Transparent Cutout"))
            {
                mainTexture = GadgetCoreAPI.LoadTexture2D("enemies/particlewyvernwing"),
            };
            EntityInfo ParticleWyvern = new EntityInfo(EntityType.COMMON, ParticleDragon).Register("ParticleWyvern");

            powerCrystalItem.AddToLootTable("entity:particleWyvern", 1.0f, 0, 4);

            GameObject MykBug = UnityEngine.Object.Instantiate(GadgetCoreAPI.GetEntityResource("spider"));

            MykBug.name = "Mykdunebug";
            MykBug.SetActive(false);
            MykBug.ReplaceComponent <SpiderScript, MykBugScript>();
            MykBug.GetComponent <Rigidbody>().useGravity = true;
            //SpiderScript spiderScript = MykBug.GetComponent<SpiderScript>();
            //GameObject mykBugHead = spiderScript.head;
            //GameObject mykBugBody = spiderScript.body;
            //GameObject mykBugLeg = spiderScript.leg;
            //GameObject mykBugB = spiderScript.b;
            //UnityEngine.Object.Destroy(spiderScript);
            //MykBugScript mykBugScript = MykBug.AddComponent<MykBugScript>();
            //mykBugScript.head = mykBugHead;
            //mykBugScript.body = mykBugBody;
            //mykBugScript.leg = mykBugLeg;
            //mykBugScript.b = mykBugB;
            MykBug.transform.Find("e").Find("dunebug").Find("Plane").GetComponent <MeshRenderer>().material = new Material(Shader.Find("Unlit/Transparent Cutout"))
            {
                mainTexture = GadgetCoreAPI.LoadTexture2D("enemies/MykDunebug/Head"),
            };
            MykBug.transform.Find("e").Find("dunebug").Find("Plane_001").GetComponent <MeshRenderer>().material = new Material(Shader.Find("Unlit/Transparent Cutout"))
            {
                mainTexture = GadgetCoreAPI.LoadTexture2D("enemies/MykDunebug/Body"),
            };
            MykBug.transform.Find("e").Find("dunebug").Find("Plane_002").GetComponent <MeshRenderer>().material = new Material(Shader.Find("Unlit/Transparent Cutout"))
            {
                mainTexture = GadgetCoreAPI.LoadTexture2D("enemies/MykDunebug/Back"),
            };
            MykBug.transform.Find("e").Find("dunebug").Find("Plane_003").GetComponent <MeshRenderer>().material = new Material(Shader.Find("Unlit/Transparent Cutout"))
            {
                mainTexture = GadgetCoreAPI.LoadTexture2D("enemies/MykDunebug/Legs"),
            };
            MykBug.transform.Find("e").Find("dunebug").Find("Plane_004").GetComponent <MeshRenderer>().material = new Material(Shader.Find("Unlit/Transparent Cutout"))
            {
                mainTexture = GadgetCoreAPI.LoadTexture2D("enemies/MykDunebug/Wings"),
            };
            MykBug.transform.Find("e").Find("dunebug").Find("Plane_005").GetComponent <MeshRenderer>().material = new Material(Shader.Find("Unlit/Transparent Cutout"))
            {
                mainTexture = GadgetCoreAPI.LoadTexture2D("enemies/MykDunebug/Wings"),
            };
            EntityInfo MykDunebug = new EntityInfo(EntityType.COMMON, MykBug).Register("Mykdunebug");

            GameObject MykWasp = UnityEngine.Object.Instantiate(GadgetCoreAPI.GetEntityResource("wasp"));

            MykWasp.name = "MykWasp";
            MykWasp.SetActive(false);
            MykWasp.ReplaceComponent <WaspScript, MykWaspScript>();
            EntityInfo mykWasp = new EntityInfo(EntityType.COMMON, MykWasp).Register("MykWasp");

            GameObject testProjEnemy = UnityEngine.Object.Instantiate(GadgetCoreAPI.GetEntityResource("sponge"));

            testProjEnemy.name = "testProjEnemy";
            testProjEnemy.SetActive(false);
            testProjEnemy.ReplaceComponent <SpongeScript, TestProjScript>();
            EntityInfo TestProjEnemy = new EntityInfo(EntityType.COMMON, testProjEnemy).Register("testProjEnemy");

            manaPack4Item.AddToLootTable("entity:testProjEnemy", 0.5f, 0, 2);
            powerCrystalItem.AddToLootTable("entity:testProjEnemy", 0.5f, 0, 4);


            GameObject lavadragonPrefab = GadgetCoreAPI.GetEntityResource("lavadragon");

            lavadragonPrefab.SetActive(false);
            GameObject bigPlasmaDragon = UnityEngine.Object.Instantiate(lavadragonPrefab);
            //bigPlasmaDragon.name = "bigplasmadragon";
            //foreach (Millipede m in bigPlasmaDragon.GetComponentsInChildren<Millipede>())
            //{
            //Transform part = m.transform;

            //m.gameObject.ReplaceComponent<Millipede, Millipede>();
            //part.gameObject.AddComponent<PlasmaDragonScript>().isMainHead = part.name == "0";
            //}
            EntityInfo bigPlasmaDerg = new EntityInfo(EntityType.BOSS, bigPlasmaDragon).Register("bigplasmadragon");


            PlanetInfo plasmaZonePlanet = new PlanetInfo(PlanetType.NORMAL, "Plasmatic Rift", new Tuple <int, int>[] { Tuple.Create(-1, 1), Tuple.Create(13, 1) }, GadgetCoreAPI.LoadAudioClip("Planets/Plasma Zone/Music"));

            plasmaZonePlanet.SetTerrainInfo(GadgetCoreAPI.LoadTexture2D("Planets/Plasma Zone/Entrance"), GadgetCoreAPI.LoadTexture2D("Planets/Plasma Zone/Zone"),
                                            GadgetCoreAPI.LoadTexture2D("Planets/Plasma Zone/MidChunkFull"), GadgetCoreAPI.LoadTexture2D("Planets/Plasma Zone/MidChunkOpen"),
                                            GadgetCoreAPI.LoadTexture2D("Planets/Plasma Zone/SideH"), GadgetCoreAPI.LoadTexture2D("Planets/Plasma Zone/SideV"));
            plasmaZonePlanet.SetBackgroundInfo(GadgetCoreAPI.LoadTexture2D("Planets/Plasma Zone/Parallax"),
                                               GadgetCoreAPI.LoadTexture2D("Planets/Plasma Zone/Background0"), GadgetCoreAPI.LoadTexture2D("Planets/Plasma Zone/Background1"),
                                               GadgetCoreAPI.LoadTexture2D("Planets/Plasma Zone/Background2"), GadgetCoreAPI.LoadTexture2D("Planets/Plasma Zone/Background3"));
            plasmaZonePlanet.SetPortalInfo(GadgetCoreAPI.LoadTexture2D("Planets/Plasma Zone/Sign"), GadgetCoreAPI.LoadTexture2D("Planets/Plasma Zone/Button"),
                                           GadgetCoreAPI.LoadTexture2D("Planets/Plasma Zone/Icon"));
            plasmaZonePlanet.Register("Plasma Zone");
            plasmaZonePlanet.AddWeightedWorldSpawn(EnergiteOre, 15);
            plasmaZonePlanet.AddWeightedWorldSpawn(ParticleWyvern, 25);
            plasmaZonePlanet.AddWeightedWorldSpawn(LightningBugTree, 15);
            plasmaZonePlanet.AddWeightedWorldSpawn(PlasmaFern, 15);
            plasmaZonePlanet.AddWeightedWorldSpawn(TestProjEnemy, 15);
            //plasmaZonePlanet.AddWeightedWorldSpawn(bigPlasmaDerg, 40);
            plasmaZonePlanet.AddWeightedWorldSpawn("obj/chest", 20);
            plasmaZonePlanet.AddWeightedWorldSpawn("obj/chestGold", 1);
            plasmaZonePlanet.AddWeightedTownSpawn("obj/chest", 25);
            plasmaZonePlanet.AddWeightedTownSpawn("obj/itemStand", 25);
            plasmaZonePlanet.AddWeightedTownSpawn("obj/chipStand", 25);
            plasmaZonePlanet.AddWeightedWorldSpawn((pos) => (GameObject)null, 2);
            plasmaZonePlanet.AddWeightedTownSpawn((pos) => (GameObject)null, 25);
            plasmaZonePlanet.AddWeightedWorldSpawn("obj/relic", 5);
            //plasmaZonePlanet.AddWeightedWorldSpawn();
            PlanetRegistry.SetVanillaExitPortalWeight(13, plasmaZonePlanet.GetID(), 75);

            PlanetInfo MykPlanet = new PlanetInfo(PlanetType.NORMAL, "Mykonogre's Zone", new Tuple <int, int>[] { Tuple.Create(-1, 1) }, GadgetCoreAPI.LoadAudioClip("Planets/Plasma Zone/Music"));

            MykPlanet.SetTerrainInfo(GadgetCoreAPI.LoadTexture2D("Planets/MykWorld/Entrance"), GadgetCoreAPI.LoadTexture2D("Planets/MykWorld/Zone"),
                                     GadgetCoreAPI.LoadTexture2D("Planets/MykWorld/MidChunkFull"), GadgetCoreAPI.LoadTexture2D("Planets/MykWorld/MidChunkOpen"),
                                     GadgetCoreAPI.LoadTexture2D("Planets/MykWorld/SideH"), GadgetCoreAPI.LoadTexture2D("Planets/MykWorld/SideV"));
            MykPlanet.SetBackgroundInfo(GadgetCoreAPI.LoadTexture2D("Planets/MykWorld/Parallax"),
                                        GadgetCoreAPI.LoadTexture2D("Planets/MykWorld/bg0"), GadgetCoreAPI.LoadTexture2D("Planets/MykWorld/bg1"),
                                        GadgetCoreAPI.LoadTexture2D("Planets/MykWorld/bg2"), GadgetCoreAPI.LoadTexture2D("Planets/MykWorld/bg3"));
            MykPlanet.SetPortalInfo(GadgetCoreAPI.LoadTexture2D("Planets/Mykworld/MykSign"), GadgetCoreAPI.LoadTexture2D("Planets/MykWorld/Button"),
                                    GadgetCoreAPI.LoadTexture2D("Planets/MykWorld/Planet"));
            MykPlanet.Register("Mykonogre Zone");
            MykPlanet.AddWeightedWorldSpawn(MykDunebug, 1);
            MykPlanet.AddWeightedWorldSpawn(mykWasp, 1);
            MykPlanet.OnGenerateWorld += (spawner, s) => spawner.StartCoroutine(SpawnMykonogre2());


            plasmaTracerItem.OnUse += (slot) =>
            {
                plasmaZonePlanet.PortalUses += 3;
                InstanceTracker.GameScript.GetComponent <AudioSource>().PlayOneShot((AudioClip)Resources.Load("Au/glitter"), Menuu.soundLevel / 10f);
                return(true);
            };
            BlankCard.AddToLootTable("entity:all", 0.00013f, 1);
            SliverCard.AddToLootTable("entity:sliver", 0.013f, 1);
            GuardianCard.AddToLootTable("entity:guardian", 0.013f, 1);
            GhostCard.AddToLootTable("entity:shroomy1", 0.013f, 1);
            //MykonogreToken.AddToLootTable("entity:mykonogre", 1.0f, 1, CustomDropBehavior: (item, pos) => {
            //MykPlanet.PortalUses += 3;
            //return true;
            //});
            var recAlchemy = new RecipePage(RecipePageType.AlchemyStation, "Stamina/Misc. Recipes", GadgetCoreAPI.LoadTexture2D("recipesAlch.png")).RegisterAsVanilla(1);

            recAlchemy.AddRecipePageEntry(new RecipePageEntry(21, 11, 31, 62, 1, 2));
            recAlchemy.AddRecipePageEntry(new RecipePageEntry(22, 12, 32, 62, 4, 3));
            recAlchemy.AddRecipePageEntry(new RecipePageEntry(33, 13, 23, 67, 1, 2));
            recAlchemy.AddRecipePageEntry(new RecipePageEntry(34, 14, 24, 67, 4, 3));
            recAlchemy.AddRecipePageEntry(new RecipePageEntry(35, 15, 25, 72, 1, 2));
            recAlchemy.AddRecipePageEntry(new RecipePageEntry(26, 36, 16, 72, 4, 3));

            recAlchemy.AddRecipePageEntry(new RecipePageEntry(21, 31, 11, 64, 1, 2));
            recAlchemy.AddRecipePageEntry(new RecipePageEntry(32, 32, 12, 68, 1, 2));
            recAlchemy.AddRecipePageEntry(new RecipePageEntry(33, 23, 13, 69, 1, 2));
            recAlchemy.AddRecipePageEntry(new RecipePageEntry(34, 24, 14, 63, 1, 2)); // Nuldmg
            recAlchemy.AddRecipePageEntry(new RecipePageEntry(35, 25, 15, 73, 1, 2));
            recAlchemy.AddRecipePageEntry(new RecipePageEntry(36, 16, 26, 74, 1, 2));
        }
Esempio n. 60
0
 public override object[] GetKeyValues(EntityInfo entityInfo)
 {
     return(GetKeyValues(entityInfo.Entity));
 }