private void enableFont() { SpriteCategory category = new SpriteCategory("customfonts", UIResourceManager.SpriteData, 1); category.SheetSizes = new Vec2i[1] { new Vec2i(8192, 8192) }; category.Load(UIResourceManager.ResourceContext, UIResourceManager.UIResourceDepot); SpritePart spritePart = new SpritePart("sim1", category, 8192, 8192) { SheetID = 1 }; string currentModulePath = ModuleInfo.GetPath("SettlementExtend"); string currentModuleDirPath = currentModulePath.Substring(0, currentModulePath.LastIndexOf("/")); string fontPath = currentModuleDirPath + "/GUI/GauntletUI/Fonts"; string fontFilePath = fontPath + "/simkai/"; UIResourceManager.FontFactory.AddFontDefinition(fontFilePath, "simkai2", UIResourceManager.SpriteData); Font font = UIResourceManager.FontFactory.GetFont("simkai2"); font.GetType().GetProperty("FontSprite").SetValue((object)font, (object)spritePart); TaleWorlds.Engine.Texture engineTexture = TaleWorlds.Engine.Texture.LoadTextureFromPath("Galahad.png", fontPath); font.FontSprite.Category.SpriteSheets[font.FontSprite.SheetID - 1] = new Texture(new EngineTexture(engineTexture)); UIResourceManager.FontFactory.DefaultFont = font; }
/// <summary> /// 処理 /// </summary> /// <param name="part"></param> public static void OnUpdate( SpritePart part, AttributeBase attribute ) { bool hasInt = attribute.@bool( 0 ); bool hasPoint = attribute.@bool( 1 ); bool hasRect = attribute.@bool( 2 ); bool hasString = attribute.@bool( 3 ); Vector2 point = Vector2.zero; Rect rect = new Rect(); int index = 0; if ( hasPoint ) { point = new Vector2( attribute.@float( 0 ), attribute.@float( 1 ) ); index = 2; } if ( hasRect ) { rect = new Rect( attribute.@float( index + 0 ), attribute.@float( index + 1 ), attribute.@float( index + 2 ), attribute.@float( index + 3 ) ); } var data = new UserData() { integer = attribute.@int( 0 ), text = hasString ? attribute.@string( 0 ) : null, point = point, rect = rect, }; part.Root.NotifyUserData( part, data ); }
public PlayerGhostShield(LevelEntity owner) : base(false, false) { this.owner = owner; this.sprite = TFGame.SpriteData.GetSpritePartInt("Shield"); if (owner is PlayerGhost) { PlayerGhost ghost = owner as PlayerGhost; this.sprite.Color = ArcherData.GetColorB(ghost.PlayerIndex, ghost.Allegiance); if (ghost.Allegiance != Allegiance.Neutral) { this.particleType = Particles.TeamDash[(int)ghost.Allegiance]; } else { this.particleType = Particles.Dash[ghost.PlayerIndex]; } } else { this.sprite.Color = ArcherData.Enemies.ColorB; this.particleType = Particles.TeamDash[1]; } this.sprite.Play(0, false); base.Add(this.sprite); this.sine = new SineWave(120); base.Add(this.sine); }
/// <summary> /// 生成 /// </summary> /// <param name="part"></param> /// <param name="value"></param> /// <returns></returns> public override AttributeBase CreateKeyFrame(SpritePart part, ValueBase value) { Value v = (Value)value; var cell = part.Root.CellMap(v.mapId); return(CellUpdater.Create(v.mapId, cell.FindCell(v.name))); }
public override spritestudio.attribute.AttributeBase CreateKeyFrame(SpritePart part, ValueBase value) { Value v = (Value)value; return(spritestudio.attribute.SizeUpdater.Create( spritestudio.attribute.SizeUpdater.kTargetX, v.value)); }
public void SetCursorColours(IDictionary <string, Color> colours) { if (this.Initialised == false) { this.Awake(); } foreach (ISpriteState state in this.CursorObject.States) { for (int j = 0; j < state.SpriteData.m_Parts.Count; j++) { SpritePart part = state.SpriteData.m_Parts[j]; if (!colours.ContainsKey(part.m_Name)) { continue; } part.m_PossibleColours = new List <Color> { colours[part.m_Name] }; state.SpriteData.m_Parts[j] = part; this.CursorObject.Clear(); } this.CursorObject.Clear(); this.CursorObject.AddSpriteState(state); } }
/// <summary> /// /// </summary> /// <param name="part"></param> /// <param name="attribute"></param> public static void OnUpdateZ(SpritePart part, AttributeBase attribute) { var position = part.transform.localPosition; position.z = attribute.@float(0); part.transform.localPosition = position; }
/// <summary> /// /// </summary> /// <param name="part"></param> /// <param name="attribute"></param> public static void OnUpdateZ( SpritePart part, AttributeBase attribute ) { var rotation = part.transform.localRotation; var angles = rotation.eulerAngles; angles.z = attribute.@float( 0 ); rotation.eulerAngles = angles; part.transform.localRotation = rotation; }
/// <summary> /// 処理 /// </summary> /// <param name="part"></param> public static void OnUpdate(SpritePart part, AttributeBase attribute) { Vector2 lt = new Vector2(attribute.@float(0), attribute.@float(1)); Vector2 rt = new Vector2(attribute.@float(2), attribute.@float(3)); Vector2 lb = new Vector2(attribute.@float(4), attribute.@float(5)); Vector2 rb = new Vector2(attribute.@float(6), attribute.@float(7)); part.TransformVertices(lt, rt, lb, rb); }
public FloatText(string text, SpriteFont font, Color color) { this.text = new TextLine(font); this.text.TextColor = color; this.text.OutlineColor = color.Contrast(); this.text.Append(text); this.startY = -(font.Height + 30); this.part = new SpritePart(-1, this.text, new Point2D(-this.text.TextWidth / 2, startY), 5, 0); }
/// <summary> /// 処理 /// </summary> /// <param name="part"></param> public static void OnUpdate( SpritePart part, AttributeBase attribute ) { Vector2 lt = new Vector2( attribute.@float( 0 ), attribute.@float( 1 ) ); Vector2 rt = new Vector2( attribute.@float( 2 ), attribute.@float( 3 ) ); Vector2 lb = new Vector2( attribute.@float( 4 ), attribute.@float( 5 ) ); Vector2 rb = new Vector2( attribute.@float( 6 ), attribute.@float( 7 ) ); part.TransformVertices( lt, rt, lb, rb ); }
/// <summary> /// /// </summary> /// <param name="part"></param> /// <param name="attribute"></param> public static void OnUpdateZ(SpritePart part, AttributeBase attribute) { var rotation = part.transform.localRotation; var angles = rotation.eulerAngles; angles.z = attribute.@float(0); rotation.eulerAngles = angles; part.transform.localRotation = rotation; }
public static void LoadFontFromModule() { var licence = true; if (licence) { //load texture GameTex texture = new GameTex((ITexture) new EngineTexture(EngineTex.CreateTextureFromPath($"../../Modules/{ModuleName}/Font", $"{FontName}.png"))); //set temporary sprite data SpriteData spriteData = new SpriteData("Font Atlas"); SpriteCategory category = new SpriteCategory($"{FontName}", spriteData, 1); SpritePart spritePart = new SpritePart($"{FontName}", category, texture.Width, texture.Height); SpriteGeneric spriteGeneric = new SpriteGeneric($"{FontName}", spritePart); // set sprite part data. (sheetid = 1 is chinise font.) category.Load((IResourceContext) new TextureLoader(texture), (ResourceDepot)null); spritePart.SheetID = 1; spritePart.SheetX = 0; spritePart.SheetY = 0; spriteData.SpriteNames.Add($"{FontName}", (Sprite)spriteGeneric); Font font = new Font($"{FontName}", $"../../Modules/{ModuleName}/Font/{FontName}.fnt", spriteData); /* reflection font factory */ Dictionary <string, Font> _bitmapFont = typeof(FontFactory).GetField("_bitmapFonts", BindingFlags.Instance | BindingFlags.NonPublic) .GetValue((object)UIResourceManager.FontFactory) as Dictionary <string, Font>; Dictionary <string, Dictionary <string, Font> > _localizationMap = typeof(FontFactory).GetField("_fontLocalizationMap", BindingFlags.Instance | BindingFlags.NonPublic) .GetValue((object)UIResourceManager.FontFactory) as Dictionary <string, Dictionary <string, Font> >; _bitmapFont[CoverFontName] = font; Dictionary <string, Font> _defaultFontMap = typeof(FontFactory).GetField("_fontLocalizationMap", BindingFlags.Instance | BindingFlags.NonPublic) .GetValue((object)UIResourceManager.FontFactory) as Dictionary <string, Font>; LocalizationMap = _localizationMap; /* cover font data. */ foreach (string index in new List <string>((IEnumerable <string>)_localizationMap[XMLKey].Keys)) { _localizationMap[XMLKey][index] = font; } /* apply */ UIResourceManager.FontFactory.DefaultFont = font; FontLoaded = true; } else { InformationManager.ShowInquiry(new InquiryData("Module Load Faile!", "failed load module.", true, false, ":(", null, null, null)); } }
public ObjectPart(Point2D position, SpritePart sprite, Gob gob, ISpriteEffect effect, int szo) { X = position.X; Y = position.Y; Sprite = sprite; Gob = gob; Effect = effect; Z = sprite.Z; SubZ = sprite.SubZ + szo; }
/// <summary> /// /// </summary> /// <param name="part"></param> /// <param name="attribute"></param> public static void OnUpdateY( SpritePart part, AttributeBase attribute ) { float value = attribute.@float( 0 ); var scaling = part.transform.localScale; float old = scaling.y; float v = old < 0 ? -value : value; scaling.y = v; //scaling.z = v; part.transform.localScale = scaling; }
/// <summary> /// /// </summary> /// <param name="part"></param> /// <param name="attribute"></param> public static void OnUpdateY(SpritePart part, AttributeBase attribute) { float value = attribute.@float(0); var scaling = part.transform.localScale; float old = scaling.y; float v = old < 0 ? -value : value; scaling.y = v; //scaling.z = v; part.transform.localScale = scaling; }
/// <summary> /// 処理 /// 縦反転 /// </summary> /// <param name="part"></param> /// <param name="attribute"></param> public static void OnUpdateV( SpritePart part, AttributeBase attribute ) { bool isFlip = attribute.@bool( 0 ); var scale = part.transform.localScale; if ( isFlip ) { scale.y = -Mathf.Abs( scale.y ); } else { scale.y = Mathf.Abs( scale.y ); } part.transform.localScale = scale; }
void OnSpriteChange(string spriteSheet, SpritePart spritePart) { if (spriteSheet == string.Empty) { partsGo[spritePart].GetComponent <SpriteRenderer>().sprite = null; spritesDict[spritePart] = null; return; } spritesDict[spritePart] = Resources.LoadAll <Sprite>("Images/player/" + spritePart.ToString().ToLower() + "/" + spriteSheet); }
/// <summary> /// キーフレーム生成 /// </summary> /// <param name="part"></param> /// <param name="animation"></param> private void MakeAttributes(SpritePart part, SSAEImporter.PartAnimation animation) { foreach (var attribute in animation.attributes) { var generated = attribute.CreateKeyFrames(part, part.Root.TotalFrames); for (int i = 0; i < generated.Count; ++i) { var key = generated[i]; if (key != null) { part.AddKey(i, key); } } } }
/// <summary> /// 処理 /// 縦反転 /// </summary> /// <param name="part"></param> /// <param name="attribute"></param> public static void OnUpdateV(SpritePart part, AttributeBase attribute) { bool isFlip = attribute.@bool(0); var scale = part.transform.localScale; if (isFlip) { scale.y = -Mathf.Abs(scale.y); } else { scale.y = Mathf.Abs(scale.y); } part.transform.localScale = scale; }
public void Set(string nameTag, float priority, Sprite sprite) { changed = true; if (Sprites.ContainsKey(nameTag)) { Sprites [nameTag] = new SpritePart() { Part = sprite, Priority = priority } } ; else { Sprites.Add(nameTag, new SpritePart() { Part = sprite, Priority = priority }); } if (Updated != null) { Updated(); } }
/// <summary> /// 処理 /// </summary> /// <param name="part"></param> public static void OnUpdate(SpritePart part, AttributeBase attribute) { bool hasInt = attribute.@bool(0); bool hasPoint = attribute.@bool(1); bool hasRect = attribute.@bool(2); bool hasString = attribute.@bool(3); Vector2 point = Vector2.zero; Rect rect = new Rect(); int index = 0; if (hasPoint) { point = new Vector2(attribute.@float(0), attribute.@float(1)); index = 2; } if (hasRect) { rect = new Rect( attribute.@float(index + 0), attribute.@float(index + 1), attribute.@float(index + 2), attribute.@float(index + 3)); } var data = new UserData() { integer = attribute.@int(0), text = hasString ? attribute.@string(0) : null, point = point, rect = rect, }; part.Root.NotifyUserData(part, data); }
public override AttributeBase CreateKeyFrame( SpritePart part, ValueBase value ) { Value v = (Value) value; return TransparencyUpdater.Create( v.value ); }
/// <summary> /// 処理 /// </summary> /// <param name="part"></param> public static void OnUpdate( SpritePart part, AttributeBase attribute ) { part.Priority = attribute.@int( 0 ); }
public override AttributeBase CreateKeyFrame(SpritePart part, ValueBase value) { Value v = (Value)value; return(ScalingUpdater.Create(ScalingUpdater.kTargetX, v.value)); }
/// <summary> /// /// </summary> /// <param name="part"></param> /// <param name="value"></param> /// <returns></returns> public override spritestudio.attribute.AttributeBase CreateKeyFrame( SpritePart part, ValueBase value ) { Value v = (Value) value; return spritestudio.attribute.UserDataNotifier.Create( v.integer, v.point, v.rect, v.text ); }
/// <summary> /// /// </summary> /// <param name="part"></param> /// <param name="value"></param> /// <returns></returns> public override spritestudio.attribute.AttributeBase CreateKeyFrame( SpritePart part, SpriteAttribute.ValueBase value ) { Value v = (Value) value; return spritestudio.attribute.VertexUpdater.Create( v.lt, v.rt, v.lb, v.rb ); }
/// <summary> /// 更新処理 /// </summary> /// <param name="part"></param> public void Do( SpritePart part ) { Functions[(int) target_]( part, this ); }
/// <summary> /// 生成 /// </summary> /// <param name="part"></param> /// <param name="value"></param> /// <returns></returns> public override AttributeBase CreateKeyFrame( SpritePart part, ValueBase value ) { Value v = (Value) value; return VisibilityUpdater.Create( !v.on ); }
/// <summary> /// 生成 /// </summary> /// <param name="part"></param> /// <param name="value"></param> /// <returns></returns> public override AttributeBase CreateKeyFrame(SpritePart part, ValueBase value) { Value v = (Value)value; return(PriorityUpdater.Create((int)v.value)); }
/// <summary> /// 処理 /// </summary> /// <param name="part"></param> public static void OnUpdate(SpritePart part, AttributeBase attribute) { part.Alpha = attribute.@float(0); }
/// <summary> /// /// </summary> /// <param name="part"></param> /// <param name="attribute"></param> public static void OnUpdateZ( SpritePart part, AttributeBase attribute ) { var position = part.transform.localPosition; position.z = attribute.@float( 0 ); part.transform.localPosition = position; }
/// <summary> /// 処理 /// </summary> /// <param name="part"></param> public static void OnUpdate( SpritePart part, AttributeBase attribute ) { part.Alpha = attribute.@float( 0 ); }
/// <summary> /// 処理 /// </summary> /// <param name="part"></param> public static void OnUpdate( SpritePart part, AttributeBase attribute ) { part.SetCellMap( attribute.@int( 0 ), attribute.@int( 1 ) ); }
/// <summary> /// 生成 /// </summary> /// <param name="part"></param> /// <param name="value"></param> /// <returns></returns> public override AttributeBase CreateKeyFrame(SpritePart part, ValueBase value) { Value v = (Value)value; return(PositionUpdater.Create(PositionUpdater.kTargetY, v.value)); }
/// <summary> /// 生成 /// </summary> /// <param name="part"></param> /// <param name="value"></param> /// <returns></returns> public override AttributeBase CreateKeyFrame(SpritePart part, ValueBase value) { Value v = (Value)value; return(VisibilityUpdater.Create(!v.on)); }
public override spritestudio.attribute.AttributeBase CreateKeyFrame( SpritePart part, ValueBase value ) { Value v = (Value) value; return spritestudio.attribute.TextureCoordUpdater.Create( spritestudio.attribute.TextureCoordUpdater.kTargetT, v.value ); }
/// <summary> /// 生成 /// </summary> /// <param name="part"></param> /// <param name="value"></param> /// <returns></returns> public override AttributeBase CreateKeyFrame( SpritePart part, ValueBase value ) { Value v = (Value) value; var cell = part.Root.CellMap( v.mapId ); return CellUpdater.Create( v.mapId, cell.FindCell( v.name ) ); }
/// <summary> /// 処理 /// </summary> /// <param name="part"></param> public static void OnUpdate(SpritePart part, AttributeBase attribute) { part.Priority = attribute.@int(0); }
/// <summary> /// 処理 /// </summary> /// <param name="part"></param> public static void OnUpdate( SpritePart part, AttributeBase attribute ) { part.IsVisible = attribute.@bool( 0 ); }
/// <summary> /// 処理 /// </summary> /// <param name="part"></param> public static void OnUpdate(SpritePart part, AttributeBase attribute) { part.SetCellMap(attribute.@int(0), attribute.@int(1)); }
/// <summary> /// 生成 /// </summary> /// <param name="part"></param> /// <param name="value"></param> /// <returns></returns> public override AttributeBase CreateKeyFrame( SpritePart part, ValueBase value ) { Value v = (Value) value; return PositionUpdater.Create( PositionUpdater.kTargetY, v.value ); }
/// <summary> /// 更新処理 /// </summary> /// <param name="part"></param> public void Do(SpritePart part) { Functions[(int)target_](part, this); }
public void Draw(SpritePart part, int x, int y) { Draw(part.Image, x + part.Offset.X, y + part.Offset.Y, part.Width, part.Height); }
public override spritestudio.attribute.AttributeBase CreateKeyFrame( SpritePart part, ValueBase value ) { Value v = (Value) value; return spritestudio.attribute.Flipper.Create( v.on, true ); }
/// <summary> /// 生成 /// </summary> /// <param name="part"></param> /// <param name="value"></param> /// <returns></returns> public override AttributeBase CreateKeyFrame( SpritePart part, ValueBase value ) { Value v = (Value) value; return PriorityUpdater.Create( (int) v.value ); }
/// <summary> /// /// </summary> /// <param name="part"></param> /// <param name="attribute"></param> public static void OnUpdateV(SpritePart part, AttributeBase attribute) { float value = attribute.@float(0); part.UpdateTexCoordV(value); }
/// <summary> /// エンジン側のキーフレームを全て生成する /// </summary> /// <param name="totalFrames"></param> /// <returns></returns> public ReadOnlyCollection <AttributeBase> CreateKeyFrames(SpritePart part, int totalFrames) { List <ValueBase> results = new List <ValueBase>(new ValueBase[totalFrames]); int finalIndex = -1; foreach (var value in values_) { if (results.Count < value.Key + 1) { ExpandList(results, value.Key + 1); } results[value.Key] = value.Value; if (finalIndex < value.Key) { finalIndex = value.Key; } } if (IsInterpolation) { // 補間フレームの生成 for (int i = 0; i < totalFrames - 1; ++i) { if (results[i] != null && results[i + 1] == null) { // iがnullでなくて、次のフレームが飛んでいる場合は補間対象 bool isInterpolated = false; for (int j = i + 2; j < totalFrames; ++j) { if (results[j] != null) { // 補間フレームを生成する var interpolated = Interpolate(results[i], i, results[j], j); for (int k = 1; k <= interpolated.Count; ++k) { results[i + k] = interpolated[k - 1]; } // 次はこのフレームから補間できないか調べる i = j - 1; isInterpolated = true; break; } } if (!isInterpolated) { // 次フレームがもう無いので終わり break; } } } } // 最終フレームは入れておく if (GetType().Name == "USER") { // ユーザーデータは最終フレームにコピーしない } else { results[totalFrames - 1] = results[finalIndex]; } // 同一数値のキーを間引く for (int i = 0; i < results.Count - 2; ++i) { if (results[i] == null) { continue; } for (int j = i + 1; j < results.Count - 1; ++j) { if (results[j] == null) { continue; } if (results[i].IsSameValue(results[j])) { results[j] = null; } else { i = j - 1; break; } } } // エンジン側のクラスに一括変換 return((from o in results.AsReadOnly() select o != null ? CreateKeyFrame(part, o) : null).ToList().AsReadOnly()); }
public override spritestudio.attribute.AttributeBase CreateKeyFrame(SpritePart part, ValueBase value) { Value v = (Value)value; return(spritestudio.attribute.Flipper.Create(v.on, false)); }
/// <summary> /// /// </summary> /// <param name="part"></param> /// <param name="attribute"></param> public static void OnUpdateV( SpritePart part, AttributeBase attribute ) { float value = attribute.@float( 0 ); part.UpdateTexCoordV( value ); }
/// <summary> /// エンジン側のキーフレームを生成する /// </summary> /// <param name="part">対象パーツ</param> /// <param name="value"></param> /// <returns></returns> public virtual AttributeBase CreateKeyFrame(SpritePart part, ValueBase value) { throw new System.NotImplementedException(GetType().Name); }
public override AttributeBase CreateKeyFrame( SpritePart part, ValueBase value ) { Value v = (Value) value; return ScalingUpdater.Create( ScalingUpdater.kTargetX, v.value ); }
/// <summary> /// /// </summary> /// <param name="part"></param> /// <param name="attribute"></param> public static void OnUpdateY( SpritePart part, AttributeBase attribute ) { float value = attribute.@float( 0 ); }