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); } }
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; }
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; }
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); } } }
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; }
/// <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); }
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; }
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; }
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; }
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); }
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); }
// 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; } }
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); }
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); }
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; }
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); }
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() ); }
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); } }
public override void SetRef(ApplicationInfo applicationInfo, ServiceInfo databaseInfo, OperationInfo table) { ParentServiceInfo = EntityInfoUtility.GetEntityInfo(applicationInfo, ParentService); }
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); } } } }
public override bool AddRemark(EntityInfo entity) { return(true); }
/// <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())); }
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); } } }
public UIWidgetInfo(EntityInfo entityInfo) : base(entityInfo) { }
internal DbColumnInfo GetEntityColumnToDbColumn(EntityInfo entity, string dbTableName, EntityColumnInfo item) { return(EntityColumnToDbColumn(entity, dbTableName, item)); }
public DeleteTemplate(EntityInfo model, string applicationId) : base(model, applicationId) { }
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); }
//EntityInfo.Builder info; private void Awake() { lastInfo = EntityInfo.CreateBuilder().Build(); //info = EntityInfo.CreateBuilder().Build(); }
// /// <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)); }
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); }
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)); } } }
/// <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); } }
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); }
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. } } }); }
public CreateTemplate(EntityInfo model, string applicationId) : base(model, applicationId) { _model = model; }
/// <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)); }
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(); } }
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)); }
public override object[] GetKeyValues(EntityInfo entityInfo) { return(GetKeyValues(entityInfo.Entity)); }