Elin Decompiled Documentation EA 23.286 Nightly Patch 1
Loading...
Searching...
No Matches
Recipe Class Reference
Inheritance diagram for Recipe:
EClass RecipeBridgePillar RecipeCard RecipeCustom

Classes

class  Ingredient
 

Public Types

enum  State { Valid , Invalid }
 
enum  IngType { Default , CreativeFood }
 

Public Member Functions

bool IsStaticLV ()
 
int GetQualityBonus ()
 
virtual int GetRefVal ()
 
virtual string GetIdThing ()
 
virtual bool ShouldShowHighlight (HitResult r)
 
BaseTileSelector.BoxType GetBoxType ()
 
int GetDefaultColor ()
 
virtual SourceMaterial.Row GetMainMaterial ()
 
virtual SourceMaterial.Row GetColorMaterial ()
 
virtual void BuildIngredientList ()
 
void BuildIngredientList (Thing t)
 
virtual void OnChangeIngredient ()
 
virtual Thing Craft (BlessedState blessed, bool sound=false, List< Thing > ings=null, TraitCrafter crafter=null, bool model=false)
 
bool HasSameTile (Point point, int dir, int altitude, int bridgeHeight)
 
virtual void Build (TaskBuild task)
 
virtual void Build (Chara chara, Card t, Point pos, int mat, int dir, int altitude, int bridgeHeight)
 
virtual void OnRenderMarker (Point point, bool active, HitResult result, bool main, int dir, int bridgeHeight)
 
string GetName ()
 
virtual string GetDetail ()
 
virtual void WriteNote (UINote n)
 
void WriteReqFactory (UINote n, bool hasFactory=true)
 
void WriteReqSkill (UINote n)
 
virtual IRenderer GetRenderer ()
 
virtual void OnSelected ()
 
virtual void OnChangeAltitude (int a)
 
virtual void Rotate ()
 
virtual void SetDir (int d)
 
virtual Recipe Duplicate ()
 
virtual void SetImage (Image icon)
 
bool IsCraftable ()
 
int GetMaxCount ()
 
void SetTextDifficulty (UIText text)
 
int GetSortVal ()
 
bool HasFirstTimeBonus ()
 
void TryGetFirstTimeBonus ()
 
void SaveLastIngredients ()
 
QuestTrackCraft GetQuestTrack ()
 
void ToggleTrack (QuestTrackCraft quest)
 

Static Public Member Functions

static Recipe GetOrCreate (string id)
 
static Recipe Create (RecipeSource _source, int idMat=-1, Thing ing=null)
 
static Recipe Create (Thing t)
 
static void DropIngredients (string id, string idMatMain, int num=1)
 
- Static Public Member Functions inherited from EClass
static int rndSeed (int a, int seed)
 
static int rnd (long a)
 
static int rnd (int a)
 
static int curve (long _a, int start, int step, int rate=75)
 
static int sqrt (int a)
 
static int rndHalf (int a)
 
static float rndf (float a)
 
static int rndSqrt (int a)
 
static void Wait (float a, Card c)
 
static void Wait (float a, Point p)
 
static int Bigger (int a, int b)
 
static int Smaller (int a, int b)
 

Public Attributes

string id
 
List< Ingredientingredients = new List<Ingredient>()
 
bool UseStock
 
bool IngAsProduct
 
bool VirtualBlock
 
int _dir
 
int sync
 
int idMat = -1
 
int idSkin
 
State state
 
RecipeSource _source
 

Static Public Attributes

static Dictionary< string, ReciperecipeCache = new Dictionary<string, Recipe>()
 
- Static Public Attributes inherited from EClass
static Core core
 

Properties

RecipeSource source [get]
 
SourceMaterial.Row DefaultMaterial [get]
 
virtual TileRow tileRow [get]
 
virtual RenderRow renderRow [get]
 
string Name [get]
 
virtual TileType tileType [get]
 
virtual bool IsFloorOrBridge [get]
 
int MaxAltitude [get]
 
int RecipeLv [get]
 
bool IsFloor [get]
 
bool IsObj [get]
 
virtual bool IsBlock [get]
 
bool IsWallOrFence [get]
 
bool IsBridge [get]
 
virtual bool IsThing [get]
 
virtual Card Mold [get]
 
virtual int W [get]
 
virtual int H [get]
 
virtual bool RequireIngredients [get]
 
bool MultiSize [get]
 
BaseTileSelector tileSelector [get]
 
virtual int CostMoney [get]
 
virtual bool CanRotate [get]
 
- Properties inherited from EClass
static Game game [get]
 
static bool AdvMode [get]
 
static Player player [get]
 
static Chara pc [get]
 
static UI ui [get]
 
static Map _map [get]
 
static Zone _zone [get]
 
static FactionBranch Branch [get]
 
static FactionBranch BranchOrHomeBranch [get]
 
static Faction Home [get]
 
static Faction Wilds [get]
 
static Scene scene [get]
 
static BaseGameScreen screen [get]
 
static GameSetting setting [get]
 
static GameData gamedata [get]
 
static ColorProfile Colors [get]
 
static World world [get]
 
static SourceManager sources [get]
 
static SourceManager editorSources [get]
 
static SoundManager Sound [get]
 
static CoreDebug debug [get]
 

Detailed Description

Definition at line 6 of file Recipe.cs.

Member Enumeration Documentation

◆ IngType

Enumerator
Default 
CreativeFood 

Definition at line 14 of file Recipe.cs.

◆ State

Enumerator
Valid 
Invalid 

Definition at line 8 of file Recipe.cs.

9 {
10 Valid,
12 }

Member Function Documentation

◆ Build() [1/2]

virtual void Recipe.Build ( Chara  chara,
Card  t,
Point  pos,
int  mat,
int  dir,
int  altitude,
int  bridgeHeight 
)
inlinevirtual

Reimplemented in RecipeBridgePillar, and RecipeCard.

Definition at line 627 of file Recipe.cs.

628 {
629 if (mat == -1)
630 {
631 mat = 2;
632 }
633 EClass.pc.PlaySound(EClass.sources.materials.rows[mat].GetSoundImpact());
634 pos.cell.isModified = true;
635 switch (source.type)
636 {
637 case "Block":
638 {
639 int ramp = tileRow.id;
640 if (ramp == 3)
641 {
642 ramp = EClass.sources.materials.rows[mat].ramp;
643 }
645 {
646 EClass._map.SetRoofBlock(pos.x, pos.z, mat, ramp, dir, altitude);
647 break;
648 }
649 if (pos.HasObj && !pos.sourceObj.tileType.CanBuiltOnBlock)
650 {
652 EClass._map.SetObj(pos.x, pos.z);
653 }
654 EClass._map.SetBlock(pos.x, pos.z, mat, ramp, dir);
655 if (tileType.IsBlockPass && pos.HasChara)
656 {
657 foreach (Chara item in pos.ListCharas())
658 {
659 chara.Kick(item, ignoreSelf: false, karmaLoss: false);
660 }
661 }
663 {
664 pos.cell.objDir = dir;
665 }
666 {
667 foreach (Card item2 in pos.ListCards())
668 {
669 if (item2.isThing && item2.placeState == PlaceState.roaming)
670 {
671 item2._Move(item2.pos.GetNearestPoint());
672 }
673 }
674 break;
675 }
676 }
677 case "Floor":
678 if (pos.HasObj && pos.sourceObj.tileType.RemoveOnFloorChange && (!BuildMenu.Instance || !EClass.debug.ignoreBuildRule))
679 {
680 EClass._map.SetObj(pos.x, pos.z);
681 }
682 EClass._map.SetFloor(pos.x, pos.z, mat, tileRow.id, dir);
683 break;
684 case "Bridge":
685 {
686 if (pos.sourceObj.tileType.RemoveOnFloorChange)
687 {
688 EClass._map.SetObj(pos.x, pos.z);
689 }
690 byte idPillar = (byte)((tileRow.id == 130) ? 255u : 0u);
691 EClass._map.SetBridge(pos.x, pos.z, Mathf.Clamp(bridgeHeight + altitude, 0, 255), mat, tileRow.id, dir, idPillar);
692 break;
693 }
694 case "Obj":
695 EClass._map.SetObj(pos.x, pos.z, mat, tileRow.id, 1, dir, ignoreRandomMat: true);
697 {
698 EClass._map.SetBlockDir(pos.x, pos.z, dir);
699 }
700 if (pos.growth != null)
701 {
703 }
704 break;
705 }
706 }
PlaceState
Definition: PlaceState.cs:2
virtual bool IsRoofEditMode(Card c=null)
Definition: ActionMode.cs:311
static BuildMenu Instance
Definition: BuildMenu.cs:77
Definition: Card.cs:11
virtual MoveResult _Move(Point p, MoveType type=MoveType.Walk)
Definition: Card.cs:5925
virtual bool isThing
Definition: Card.cs:2119
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6375
void Kick(Point p, bool ignoreSelf=false, bool checkWall=true)
Definition: Card.cs:6057
PlaceState placeState
Definition: Card.cs:84
Point pos
Definition: Card.cs:60
Definition: Chara.cs:10
bool ignoreBuildRule
Definition: CoreDebug.cs:185
Definition: EClass.cs:6
static Scene scene
Definition: EClass.cs:31
static Map _map
Definition: EClass.cs:19
static SourceManager sources
Definition: EClass.cs:43
static Chara pc
Definition: EClass.cs:15
static CoreDebug debug
Definition: EClass.cs:49
void SetDefaultStage()
Definition: GrowSystem.cs:264
void SetBridge(int x, int z, int height=0, int idMat=0, int idBridge=0, int dir=0, byte idPillar=0)
Definition: Map.cs:972
void SetBlockDir(int x, int z, int dir)
Definition: Map.cs:1165
void MineObjSound(Point point)
Definition: Map.cs:1937
void SetFloor(int x, int z, int idMat=0, int idFloor=0)
Definition: Map.cs:957
void SetBlock(int x, int z, int idMat=0, int idBlock=0)
Definition: Map.cs:996
void SetRoofBlock(int x, int z, int idMat, int idBlock, int dir, int height)
Definition: Map.cs:987
void SetObj(int x, int z, int id=0, int value=1, int dir=0)
Definition: Map.cs:1535
List< Card > ListCards(bool includeMasked=false)
Definition: Point.cs:1051
int x
Definition: Point.cs:36
Point GetNearestPoint(bool allowBlock=false, bool allowChara=true, bool allowInstalled=true, bool ignoreCenter=false, int minRadius=0)
Definition: Point.cs:619
int z
Definition: Point.cs:39
SourceObj.Row sourceObj
Definition: Point.cs:69
List< Chara > ListCharas()
Definition: Point.cs:1171
bool HasObj
Definition: Point.cs:137
GrowSystem growth
Definition: Point.cs:77
bool HasChara
Definition: Point.cs:238
string type
Definition: RecipeSource.cs:7
virtual TileRow tileRow
Definition: Recipe.cs:208
virtual TileType tileType
Definition: Recipe.cs:215
RecipeSource source
Definition: Recipe.cs:204
ActionMode actionMode
Definition: Scene.cs:79
SourceMaterial materials
int id
Definition: TileRow.cs:8
virtual bool AltitudeAsDir
Definition: TileType.cs:221
virtual bool ChangeBlockDir
Definition: TileType.cs:129
virtual bool IsBlockPass
Definition: TileType.cs:155

References EClass._map, Card._Move(), Scene.actionMode, TileType.AltitudeAsDir, TileType.ChangeBlockDir, EClass.debug, Point.GetNearestPoint(), Point.growth, Point.HasChara, Point.HasObj, TileRow.id, CoreDebug.ignoreBuildRule, BuildMenu.Instance, TileType.IsBlockPass, ActionMode.IsRoofEditMode(), Card.isThing, item, Card.Kick(), Point.ListCards(), Point.ListCharas(), SourceManager.materials, Map.MineObjSound(), EClass.pc, Card.placeState, Card.PlaySound(), Card.pos, EClass.scene, Map.SetBlock(), Map.SetBlockDir(), Map.SetBridge(), GrowSystem.SetDefaultStage(), Map.SetFloor(), Map.SetObj(), Map.SetRoofBlock(), source, Point.sourceObj, EClass.sources, tileRow, tileType, RecipeSource.type, Point.x, and Point.z.

◆ Build() [2/2]

virtual void Recipe.Build ( TaskBuild  task)
inlinevirtual

Reimplemented in RecipeCard, and RecipeCustom.

Definition at line 622 of file Recipe.cs.

623 {
624 Build(task.owner, null, task.pos, (ingredients.Count > 0) ? ingredients[0].mat : task.recipe.idMat, task.dir, task.altitude, task.bridgeHeight);
625 }
new Chara owner
Definition: AIAct.cs:14
int idMat
Definition: Recipe.cs:196
List< Ingredient > ingredients
Definition: Recipe.cs:181
int altitude
Definition: TaskBuild.cs:17
Recipe recipe
Definition: TaskBuild.cs:8
int bridgeHeight
Definition: TaskBuild.cs:14
int dir
Definition: TaskBuild.cs:11
Point pos
Definition: TaskPoint.cs:11

References TaskBuild.altitude, TaskBuild.bridgeHeight, Build, TaskBuild.dir, idMat, ingredients, AIAct.owner, TaskPoint.pos, and TaskBuild.recipe.

Referenced by TaskBuild.OnProgressComplete().

◆ BuildIngredientList() [1/2]

virtual void Recipe.BuildIngredientList ( )
inlinevirtual

Reimplemented in RecipeCard.

Definition at line 526 of file Recipe.cs.

527 {
529 {
531 }
532 }
List< Recipe.Ingredient > GetIngredients()
virtual bool RequireIngredients
Definition: Recipe.cs:280
bool UseStock
Definition: Recipe.cs:184

References RecipeSource.GetIngredients(), ingredients, RequireIngredients, source, and UseStock.

Referenced by Create(), RecipeManager.Create(), DropIngredients(), BuildMenu.RefreshCategory(), and LayerCraft.RefreshCategory().

◆ BuildIngredientList() [2/2]

void Recipe.BuildIngredientList ( Thing  t)
inline

Definition at line 534 of file Recipe.cs.

535 {
536 UseStock = true;
537 Ingredient item = new Ingredient
538 {
539 id = t.id,
540 tag = null,
541 req = 1,
542 uid = t.uid,
543 thing = t,
544 mat = t.material.id
545 };
546 ingredients.Add(item);
547 }
string id
Definition: Card.cs:36
int uid
Definition: Card.cs:123

References Card.id, ingredients, item, Card.uid, and UseStock.

◆ Craft()

virtual Thing Recipe.Craft ( BlessedState  blessed,
bool  sound = false,
List< Thing ings = null,
TraitCrafter  crafter = null,
bool  model = false 
)
inlinevirtual

Reimplemented in RecipeCard.

Definition at line 553 of file Recipe.cs.

554 {
555 Thing thing = null;
556 string type = source.type;
557 thing = ((type == "Block") ? ThingGen.CreateBlock(tileRow.id, GetMainMaterial().id) : ((!(type == "Obj")) ? ThingGen.CreateFloor(tileRow.id, GetMainMaterial().id, source.isBridge) : ThingGen.CreateObj(tileRow.id, GetMainMaterial().id)));
558 if (thing == null)
559 {
560 return null;
561 }
562 thing.trait.OnCrafted(this, ings);
563 thing.SetBlessedState(blessed);
564 if (model)
565 {
566 return thing;
567 }
568 Msg.Say("crafted", thing);
569 thing = EClass.pc.AddCard(thing) as Thing;
570 if (thing.GetRootCard() == EClass.pc)
571 {
572 EClass.pc.HoldCard(thing);
573 }
574 return thing;
575 }
Card AddCard(Card c)
Definition: Card.cs:3166
virtual void SetBlessedState(BlessedState s)
Definition: Card.cs:3977
Trait trait
Definition: Card.cs:54
Card GetRootCard()
Definition: Card.cs:3508
void HoldCard(Card t, int num=-1)
Definition: Chara.cs:4545
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
virtual SourceMaterial.Row GetMainMaterial()
Definition: Recipe.cs:484
static Thing CreateBlock(int id, int idMat)
Definition: ThingGen.cs:101
static Thing CreateObj(int id, int idMat)
Definition: ThingGen.cs:116
static Thing CreateFloor(int id, int idMat, bool platform=false)
Definition: ThingGen.cs:108
Definition: Thing.cs:8
virtual void OnCrafted(Recipe recipe, List< Thing > ings)
Definition: Trait.cs:686

References Card.AddCard(), ThingGen.CreateBlock(), ThingGen.CreateFloor(), ThingGen.CreateObj(), GetMainMaterial(), Card.GetRootCard(), Chara.HoldCard(), TileRow.id, RecipeSource.isBridge, Trait.OnCrafted(), EClass.pc, Msg.Say(), Card.SetBlessedState(), source, tileRow, Card.trait, and RecipeSource.type.

Referenced by TaskCraft.OnProgressComplete(), LayerCraft.RefreshProduct(), and AI_UseCrafter.Run().

◆ Create() [1/2]

static Recipe Recipe.Create ( RecipeSource  _source,
int  idMat = -1,
Thing  ing = null 
)
inlinestatic

Definition at line 325 of file Recipe.cs.

326 {
327 string type = _source.type;
328 Recipe recipe = (_source.isBridgePillar ? new RecipeBridgePillar() : (type.IsEmpty() ? new RecipeCard() : ((type == "Custom") ? new RecipeCustom() : new Recipe())));
329 recipe.id = _source.id;
330 recipe._source = _source;
331 recipe.idMat = idMat;
332 if (ing != null)
333 {
334 recipe.BuildIngredientList(ing);
335 if (ing.trait is TraitTile)
336 {
337 recipe.VirtualBlock = true;
338 }
339 }
340 return recipe;
341 }
Definition: Recipe.cs:7
RecipeSource _source
Definition: Recipe.cs:202
virtual void BuildIngredientList()
Definition: Recipe.cs:526

References _source, BuildIngredientList(), RecipeSource.id, idMat, and RecipeSource.type.

Referenced by BuildMenu._Search(), RecipeManager.Create(), Trait.GetBuildModeRecipe(), TraitTile.GetBuildModeRecipe(), GetOrCreate(), Trait.GetRecipe(), TraitTile.GetRecipe(), BuildMenu.RefreshCategory(), LayerCraft.RefreshCategory(), LayerCraftFloat.RefreshDisassemble(), and WidgetCodex.Search().

◆ Create() [2/2]

static Recipe Recipe.Create ( Thing  t)
inlinestatic

Definition at line 343 of file Recipe.cs.

344 {
345 RecipeSource recipeSource = RecipeManager.dict.TryGetValue(t.id);
346 if (recipeSource == null)
347 {
348 return null;
349 }
350 RecipeCard recipeCard = new RecipeCard
351 {
352 id = recipeSource.id,
353 _source = recipeSource,
354 IngAsProduct = true,
355 idSkin = t.idSkin
356 };
357 recipeCard.BuildIngredientList(t);
358 if (t.uid == 0 || recipeCard.ingredients[0].uid == 0 || recipeCard.ingredients[0].thing == null)
359 {
360 Debug.LogError("expection: invalid ingredient " + t);
361 }
362 return recipeCard;
363 }
override void BuildIngredientList()
Definition: RecipeCard.cs:65
static Dictionary< string, RecipeSource > dict
int idSkin
Definition: Recipe.cs:198
bool IngAsProduct
Definition: Recipe.cs:187

References _source, RecipeCard.BuildIngredientList(), Debug, RecipeManager.dict, Card.id, RecipeSource.id, idSkin, IngAsProduct, ingredients, and Card.uid.

◆ DropIngredients()

static void Recipe.DropIngredients ( string  id,
string  idMatMain,
int  num = 1 
)
inlinestatic

Definition at line 365 of file Recipe.cs.

366 {
368 Recipe orCreate = GetOrCreate(EClass.sources.cards.map[id].RecipeID);
369 orCreate.BuildIngredientList();
370 Msg.Say("dropReward");
371 foreach (Ingredient ingredient in orCreate.ingredients)
372 {
373 Thing thing = ThingGen.Create(ingredient.id).SetNum(ingredient.req);
374 if (ingredient == orCreate.ingredients[0])
375 {
376 thing.ChangeMaterial(idMatMain);
377 thing.SetNum(num);
378 }
379 EClass.player.DropReward(thing, silent: true);
380 }
381 }
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
Definition: Card.cs:3117
Thing SetNum(int a)
Definition: Card.cs:3577
static Player player
Definition: EClass.cs:13
Thing DropReward(Thing t, bool silent=false)
Definition: Player.cs:2630
static void BuildList()
static Recipe GetOrCreate(string id)
Definition: Recipe.cs:310
Dictionary< string, CardRow > map
Definition: SourceCard.cs:9
SourceCard cards
static Thing Create(string id, int idMat=-1, int lv=-1)
Definition: ThingGen.cs:53

References BuildIngredientList(), RecipeManager.BuildList(), SourceManager.cards, Card.ChangeMaterial(), ThingGen.Create(), Player.DropReward(), GetOrCreate(), Recipe.Ingredient.id, SourceCard.map, EClass.player, Recipe.Ingredient.req, Msg.Say(), Card.SetNum(), and EClass.sources.

Referenced by DramaOutcome.QuestShippingChest_Drop1().

◆ Duplicate()

virtual Recipe Recipe.Duplicate ( )
inlinevirtual

Reimplemented in RecipeBridgePillar, and RecipeCard.

Definition at line 897 of file Recipe.cs.

898 {
899 return IO.DeepCopy(this);
900 }
Definition: IO.cs:11

◆ GetBoxType()

BaseTileSelector.BoxType Recipe.GetBoxType ( )
inline

Definition at line 465 of file Recipe.cs.

466 {
468 {
469 return BaseTileSelector.BoxType.Box;
470 }
471 return BaseTileSelector.BoxType.Fence;
472 }
virtual BaseTileSelector.BoxType BoxType
Definition: TileType.cs:277

References TileType.BoxType, and tileType.

◆ GetColorMaterial()

virtual SourceMaterial.Row Recipe.GetColorMaterial ( )
inlinevirtual

Definition at line 498 of file Recipe.cs.

499 {
500 if (idMat != -1)
501 {
502 return EClass.sources.materials.rows[idMat];
503 }
504 if (UseStock)
505 {
506 ingredients[0].RefreshThing();
507 Thing thing = ingredients[0].thing;
508 if (thing != null)
509 {
510 if (!thing.isDyed)
511 {
512 return thing.material;
513 }
514 return thing.DyeMat;
515 }
516 return EClass.sources.materials.rows[3];
517 }
518 int num = ((ingredients.Count > 0) ? ingredients[source.colorIng].mat : 3);
519 if (num == -1)
520 {
521 num = 3;
522 }
523 return EClass.sources.materials.rows[num];
524 }
SourceMaterial.Row DyeMat
Definition: Card.cs:1978
SourceMaterial.Row material
Definition: Card.cs:2089
bool isDyed
Definition: Card.cs:459

References RecipeSource.colorIng, Card.DyeMat, idMat, ingredients, Card.isDyed, Card.material, SourceManager.materials, source, EClass.sources, and UseStock.

Referenced by RecipeCard.Build(), RecipeCard.Craft(), HasSameTile(), DropdownGrid.OnChangeIngredient(), RecipeCard.OnChangeIngredient(), TaskBuild.OnProgressComplete(), TaskCraft.OnProgressComplete(), UIRecipeInfo.RefreshImages(), AI_UseCrafter.Run(), ButtonGrid.SetRecipeVariation(), and UICardInfo.UpdateRecipe().

◆ GetDefaultColor()

int Recipe.GetDefaultColor ( )
inline

Definition at line 474 of file Recipe.cs.

475 {
476 if (UseStock)
477 {
478 Thing thing = ingredients[0].thing;
479 return renderRow.GetColorInt(thing.isDyed ? thing.DyeMat : thing.material);
480 }
482 }
SourceMaterial.Row DefaultMaterial
Definition: Recipe.cs:206
virtual RenderRow renderRow
Definition: Recipe.cs:210
int GetColorInt(SourceMaterial.Row mat)
Definition: RenderRow.cs:439

References DefaultMaterial, Card.DyeMat, RenderRow.GetColorInt(), ingredients, Card.isDyed, Card.material, renderRow, and UseStock.

Referenced by GridItemRecipe.SetButton(), and ButtonGrid.SetRecipe().

◆ GetDetail()

virtual string Recipe.GetDetail ( )
inlinevirtual

Reimplemented in RecipeCard.

Definition at line 802 of file Recipe.cs.

803 {
804 return renderRow.GetText("detail").IsEmpty(source.GetDetail());
805 }
string GetDetail()
string GetText(string id="name", bool returnNull=false)
Definition: SourceData.cs:626

References RecipeSource.GetDetail(), SourceData< T, T2 >.BaseRow.GetText(), renderRow, and source.

Referenced by UIRecipeInfo.Refresh(), GridItemRecipe.SetButton(), and ButtonGrid.SetCraftRecipe().

◆ GetIdThing()

virtual string Recipe.GetIdThing ( )
inlinevirtual

Reimplemented in RecipeCard.

Definition at line 439 of file Recipe.cs.

440 {
441 if (source.row is SourceBlock.Row)
442 {
443 return (source.row as SourceBlock.Row).idThing;
444 }
445 if (source.row is SourceFloor.Row)
446 {
447 if (!IsBridge)
448 {
449 return "floor";
450 }
451 return "platform";
452 }
453 if (source.row is SourceObj.Row)
454 {
455 return "obj";
456 }
457 return null;
458 }
RenderRow row
Definition: RecipeSource.cs:5
bool IsBridge
Definition: Recipe.cs:250

References IsBridge, RecipeSource.row, and source.

Referenced by UIRecipeInfo.Refresh().

◆ GetMainMaterial()

virtual SourceMaterial.Row Recipe.GetMainMaterial ( )
inlinevirtual

Definition at line 484 of file Recipe.cs.

485 {
486 int num = -1;
487 if (ingredients.Count > 0)
488 {
489 num = ((ingredients[0].thing == null) ? ingredients[0].mat : ingredients[0].thing.material.id);
490 }
491 if (num == -1)
492 {
493 num = 3;
494 }
495 return EClass.sources.materials.rows[num];
496 }

References ingredients, SourceManager.materials, and EClass.sources.

Referenced by RecipeCard.Build(), Craft(), RecipeCard.Craft(), RecipeCard.OnChangeIngredient(), and TaskCraft.OnProgress().

◆ GetMaxCount()

int Recipe.GetMaxCount ( )
inline

Definition at line 933 of file Recipe.cs.

934 {
935 int num = 999;
936 for (int i = 0; i < ingredients.Count; i++)
937 {
938 Ingredient ingredient = ingredients[i];
939 Thing thing = ingredient.thing;
940 int num2 = 0;
941 if (!ingredient.optional || thing != null)
942 {
943 if (thing != null && !thing.isDestroyed)
944 {
945 num2 = thing.Num / ingredient.req;
946 }
947 if (num2 < num)
948 {
949 num = num2;
950 }
951 }
952 }
953 return num;
954 }
bool isDestroyed
Definition: Card.cs:76

References ingredients, Card.isDestroyed, Recipe.Ingredient.optional, Recipe.Ingredient.req, and Recipe.Ingredient.thing.

Referenced by LayerCraft.RefreshInputNum().

◆ GetName()

string Recipe.GetName ( )
inline

Definition at line 780 of file Recipe.cs.

781 {
782 if (UseStock && ingredients[0].thing == null)
783 {
784 return "";
785 }
786 string text = (UseStock ? ingredients[0].thing.Name : source.Name);
787 if (text == "")
788 {
789 text = ("card_" + source.id).lang();
790 }
791 if (text == "*r")
792 {
793 text = source.row.GetText("aka");
794 }
795 if (text == "*r")
796 {
797 text = "(" + source.row.GetField<string>("id") + ")";
798 }
799 return text.ToTitleCase();
800 }

References SourceData< T, T2 >.BaseRow.GetText(), RecipeSource.id, ingredients, RecipeSource.Name, RecipeSource.row, source, and UseStock.

Referenced by UIRecipeInfo.Refresh(), and ButtonGrid.SetCraftRecipe().

◆ GetOrCreate()

static Recipe Recipe.GetOrCreate ( string  id)
inlinestatic

Definition at line 310 of file Recipe.cs.

311 {
312 Recipe recipe = recipeCache.TryGetValue(id);
313 if (recipe == null)
314 {
315 RecipeSource recipeSource = RecipeManager.dict.TryGetValue(id);
316 if (recipeSource != null)
317 {
318 recipe = Create(recipeSource);
319 recipeCache.Add(id, recipe);
320 }
321 }
322 return recipe;
323 }
static Dictionary< string, Recipe > recipeCache
Definition: Recipe.cs:175
static Recipe Create(RecipeSource _source, int idMat=-1, Thing ing=null)
Definition: Recipe.cs:325

References Create(), RecipeManager.dict, and recipeCache.

Referenced by PartialMap.Apply(), and DropIngredients().

◆ GetQualityBonus()

int Recipe.GetQualityBonus ( )
inline

Definition at line 397 of file Recipe.cs.

398 {
399 if (IsStaticLV())
400 {
401 return 0;
402 }
403 Element reqSkill = source.GetReqSkill();
404 int num = reqSkill.Value - EClass.pc.Evalue(reqSkill.id);
405 int num2 = 0;
406 if (num > 0)
407 {
408 if (num < 5)
409 {
410 return 0;
411 }
412 return -(num - 4) * 10;
413 }
414 num2 += EClass.curve(-num, 10, 20, 80) / 10 * 10 + 10;
415 if (RecipeLv > 0)
416 {
417 num2 += (int)Mathf.Sqrt(RecipeLv - 1) * 10;
418 }
419 return num2;
420 }
int Evalue(int ele)
Definition: Card.cs:2611
static int curve(long _a, int start, int step, int rate=75)
Definition: EClass.cs:69
int id
Definition: ELEMENT.cs:255
Element GetReqSkill()
int RecipeLv
Definition: Recipe.cs:240
bool IsStaticLV()
Definition: Recipe.cs:383

References EClass.curve(), Card.Evalue(), RecipeSource.GetReqSkill(), Element.id, IsStaticLV(), EClass.pc, RecipeLv, and source.

Referenced by RecipeCard.Craft(), RecipeCard.MakeDish(), and RecipeCard.MixIngredients().

◆ GetQuestTrack()

QuestTrackCraft Recipe.GetQuestTrack ( )
inline

Definition at line 1006 of file Recipe.cs.

1007 {
1008 QuestTrackCraft result = null;
1009 foreach (Quest item in EClass.game.quests.list)
1010 {
1011 if (item is QuestTrackCraft)
1012 {
1013 result = item as QuestTrackCraft;
1014 break;
1015 }
1016 }
1017 return result;
1018 }
static Game game
Definition: EClass.cs:9
QuestManager quests
Definition: Game.cs:183
List< Quest > list
Definition: QuestManager.cs:11
Definition: Quest.cs:7

References EClass.game, item, QuestManager.list, and Game.quests.

Referenced by WidgetCodex.RefreshList(), and LayerCraft.RefreshTrackButton().

◆ GetRefVal()

virtual int Recipe.GetRefVal ( )
inlinevirtual

Definition at line 422 of file Recipe.cs.

423 {
424 if (source.row is SourceBlock.Row)
425 {
426 return (source.row as SourceBlock.Row).id;
427 }
428 if (source.row is SourceFloor.Row)
429 {
430 return (source.row as SourceFloor.Row).id;
431 }
432 if (source.row is SourceObj.Row)
433 {
434 return (source.row as SourceObj.Row).id;
435 }
436 return -1;
437 }

References RecipeSource.row, and source.

Referenced by UIRecipeInfo.Refresh().

◆ GetRenderer()

virtual IRenderer Recipe.GetRenderer ( )
inlinevirtual

Reimplemented in RecipeCard.

Definition at line 832 of file Recipe.cs.

833 {
834 return tileRow.renderData;
835 }
RenderData renderData
Definition: RenderRow.cs:71

References RenderRow.renderData, and tileRow.

Referenced by UICardInfo.UpdateRecipe().

◆ GetSortVal()

int Recipe.GetSortVal ( )
inline

Definition at line 964 of file Recipe.cs.

965 {
966 Element reqSkill = source.GetReqSkill();
967 return reqSkill.source.id * 10000 - reqSkill.Value;
968 }
int Value
Definition: ELEMENT.cs:297

References RecipeSource.GetReqSkill(), source, and Element.Value.

Referenced by LayerCraft.RefreshCategory().

◆ HasFirstTimeBonus()

bool Recipe.HasFirstTimeBonus ( )
inline

Definition at line 970 of file Recipe.cs.

971 {
972 if (IsStaticLV())
973 {
974 return false;
975 }
976 if (EClass.player.recipes.craftedRecipes.Contains(id))
977 {
978 return false;
979 }
980 return true;
981 }
RecipeManager recipes
Definition: Player.cs:1152
HashSet< string > craftedRecipes

References RecipeManager.craftedRecipes, IsStaticLV(), EClass.player, and Player.recipes.

Referenced by LayerCraft.RefreshCategory(), and TryGetFirstTimeBonus().

◆ HasSameTile()

bool Recipe.HasSameTile ( Point  point,
int  dir,
int  altitude,
int  bridgeHeight 
)
inline

Definition at line 577 of file Recipe.cs.

578 {
579 if (IsObj)
580 {
581 if (point.growth != null && point.sourceObj == tileRow && point.cell.matObj == GetColorMaterial())
582 {
583 return true;
584 }
585 if (dir == point.cell.objDir && point.cell.matObj == GetColorMaterial() && point.sourceObj == tileRow)
586 {
587 return true;
588 }
589 }
590 else if (IsBridge)
591 {
592 if (dir == point.cell.floorDir && point.matBridge == GetColorMaterial() && point.sourceBridge == tileRow && Mathf.Clamp(bridgeHeight + altitude, 0, 255) == point.cell.bridgeHeight)
593 {
594 return true;
595 }
596 }
597 else if (IsFloorOrBridge)
598 {
599 if (dir == point.cell.floorDir && point.matFloor == GetColorMaterial() && point.sourceFloor == tileRow)
600 {
601 return true;
602 }
603 }
604 else if (IsWallOrFence)
605 {
606 if (point.matBlock == GetColorMaterial() && point.sourceBlock == tileRow && dir == point.cell.blockDir)
607 {
608 return true;
609 }
610 }
611 else if (IsBlock && point.matBlock == GetColorMaterial() && (point.sourceBlock == tileRow || (tileRow != null && tileRow.tileType == point.sourceBlock.tileType && tileRow.tileType == TileType.Slope)))
612 {
613 if (point.sourceBlock.tileType.AltitudeAsDir && dir != point.cell.objDir)
614 {
615 return false;
616 }
617 return true;
618 }
619 return false;
620 }
SourceMaterial.Row matObj
Definition: Cell.cs:1036
int floorDir
Definition: Cell.cs:922
int objDir
Definition: Cell.cs:910
byte bridgeHeight
Definition: Cell.cs:74
int blockDir
Definition: Cell.cs:898
SourceMaterial.Row matBlock
Definition: Point.cs:55
SourceMaterial.Row matFloor
Definition: Point.cs:57
SourceBlock.Row sourceBlock
Definition: Point.cs:63
SourceMaterial.Row matBridge
Definition: Point.cs:59
SourceFloor.Row sourceFloor
Definition: Point.cs:65
Cell cell
Definition: Point.cs:51
SourceFloor.Row sourceBridge
Definition: Point.cs:67
bool IsObj
Definition: Recipe.cs:244
virtual bool IsFloorOrBridge
Definition: Recipe.cs:226
virtual bool IsBlock
Definition: Recipe.cs:246
bool IsWallOrFence
Definition: Recipe.cs:248
virtual SourceMaterial.Row GetColorMaterial()
Definition: Recipe.cs:498
TileType tileType
Definition: RenderRow.cs:77
static TileTypeSlope Slope
Definition: TileType.cs:25

References Cell.blockDir, Cell.bridgeHeight, Point.cell, Cell.floorDir, GetColorMaterial(), Point.growth, IsBlock, IsBridge, IsFloorOrBridge, IsObj, IsWallOrFence, Point.matBlock, Point.matBridge, Point.matFloor, Cell.matObj, Cell.objDir, TileType.Slope, Point.sourceBlock, Point.sourceBridge, Point.sourceFloor, Point.sourceObj, tileRow, and RenderRow.tileType.

Referenced by TaskBuild.GetHitResult().

◆ IsCraftable()

bool Recipe.IsCraftable ( )
inline

Definition at line 907 of file Recipe.cs.

908 {
909 foreach (Ingredient ingredient in ingredients)
910 {
911 if (ingredient.optional)
912 {
913 continue;
914 }
915 ThingStack thingStack = EClass._map.Stocked.ListThingStack(ingredient, StockSearchMode.AroundPC);
916 bool flag = false;
917 foreach (Thing item in thingStack.list)
918 {
919 if (item.Num >= ingredient.req)
920 {
921 flag = true;
922 break;
923 }
924 }
925 if (!flag)
926 {
927 return false;
928 }
929 }
930 return true;
931 }
StockSearchMode
PropsStocked Stocked
Definition: Map.cs:121
ThingStack ListThingStack(Recipe.Ingredient ing, StockSearchMode searchMode)
Definition: Props.cs:204
List< Thing > list
Definition: ThingStack.cs:5

References EClass._map, ingredients, item, Props.ListThingStack(), Recipe.Ingredient.optional, Recipe.Ingredient.req, and Map.Stocked.

◆ IsStaticLV()

bool Recipe.IsStaticLV ( )
inline

Definition at line 383 of file Recipe.cs.

384 {
385 switch (source.idFactory)
386 {
387 case "factory_floor":
388 case "factory_block":
389 case "factory_wall":
390 case "factory_platform":
391 return true;
392 default:
393 return renderRow.Category.IsChildOf("block");
394 }
395 }
string idFactory
Definition: RecipeSource.cs:87
SourceCategory.Row Category
Definition: RenderRow.cs:119

References RenderRow.Category, RecipeSource.idFactory, renderRow, and source.

Referenced by GetQualityBonus(), HasFirstTimeBonus(), and TryGetFirstTimeBonus().

◆ OnChangeAltitude()

virtual void Recipe.OnChangeAltitude ( int  a)
inlinevirtual

Reimplemented in RecipeCard.

Definition at line 841 of file Recipe.cs.

842 {
843 }

Referenced by AM_Build.SetAltitude().

◆ OnChangeIngredient()

virtual void Recipe.OnChangeIngredient ( )
inlinevirtual

◆ OnRenderMarker()

virtual void Recipe.OnRenderMarker ( Point  point,
bool  active,
HitResult  result,
bool  main,
int  dir,
int  bridgeHeight 
)
inlinevirtual

Reimplemented in RecipeCard.

Definition at line 708 of file Recipe.cs.

709 {
710 if (dir != -1)
711 {
712 _dir = dir;
713 }
714 RenderParam renderParam = tileRow.GetRenderParam(DefaultMaterial, _dir, point, bridgeHeight);
715 renderParam.matColor = (active ? EClass.Colors.blockColors.Active : EClass.Colors.blockColors.Inactive);
716 point.ApplyAnime(renderParam);
717 if (tileType.IsWater)
718 {
720 {
721 EClass.screen.guide.passGuideFloor.Add(point, (float)result, 0.3f);
722 }
723 return;
724 }
726 {
727 Vector3 v = point.Position();
729 {
731 }
732 }
734 {
735 if (bridgeHeight > 0 && !point.cell.skipRender && EClass.screen.guide.isActive)
736 {
737 EClass.screen.guide.passGuideFloor.Add(point, (float)result, 0.3f);
738 }
739 if (!tileType.IsWallOrFence && (point.HasChara || (point.HasObj && point.cell.blocked)))
740 {
741 Vector3 v2 = point.Position();
743 {
745 }
746 return;
747 }
749 {
750 EClass.screen.tileMap.SetRoofHeight(renderParam, point.cell, point.x, point.z, 0, bridgeHeight, tileType.IsWallOrFence ? _dir : (-1), ignoreAltitudeY: true);
751 }
752 renderParam.y = renderParam.y - EClass.screen.tileMap.rendererBlockMarker.offset.y + renderRow.renderData.offset.y;
753 renderParam.z += EClass.setting.render.tileMarkerZ;
754 int num = ((tileType.blockRenderMode != BlockRenderMode.Pillar) ? 1 : (_dir + 1 + ((_dir >= 7) ? _dir : 0)));
755 if (num == 1)
756 {
758 }
759 else
760 {
762 }
763 }
765 {
766 if (point.HasObj)
767 {
768 _ = ref point.Position();
769 }
770 renderParam.z += ((point.cell.liquidLv > 0) ? (-0.01f) : EClass.setting.render.tileMarkerZFloor);
772 }
773 else
774 {
775 renderParam.z += EClass.setting.render.tileMarkerZ;
776 renderRow.renderData.Draw(renderParam);
777 }
778 }
BlockRenderMode
ScreenGuide guide
BaseTileMap tileMap
MeshPass passFloor
Definition: BaseTileMap.cs:145
MeshPass passFloorEx
Definition: BaseTileMap.cs:163
MeshPass passFloorWater
Definition: BaseTileMap.cs:165
RenderData rendererFloorMarker
Definition: BaseTileMap.cs:201
RenderData rendererBlockMarker
Definition: BaseTileMap.cs:199
MeshPass passLiquid
Definition: BaseTileMap.cs:135
void SetRoofHeight(MeshPassParam _param, Cell _cell, int _cx, int _cz, int h=0, int altitude=0, int dirWall=-1, bool ignoreAltitudeY=false)
MeshPass passBlockEx
Definition: BaseTileMap.cs:161
MeshPass passBlock
Definition: BaseTileMap.cs:147
bool skipRender
Definition: Cell.cs:270
BlockColors blockColors
static ColorProfile Colors
Definition: EClass.cs:39
static BaseGameScreen screen
Definition: EClass.cs:33
static GameSetting setting
Definition: EClass.cs:35
RenderSetting render
Definition: GameSetting.cs:301
void Add(Point point, float tile=0f, float color=0f)
Definition: MeshPass.cs:122
ref Vector3 Position(int height)
Definition: Point.cs:548
RenderParam ApplyAnime(RenderParam p)
Definition: Point.cs:1325
bool HasNonWallBlock
Definition: Point.cs:194
int _dir
Definition: Recipe.cs:192
void Draw(RenderParam p, int tile)
Definition: RenderData.cs:128
void DrawRepeat(RenderParam p, int count, float size, bool skipFirst=false)
Definition: RenderData.cs:214
Vector3 offset
Definition: RenderData.cs:18
MeshPass pass
Definition: RenderData.cs:16
virtual RenderParam GetRenderParam(SourceMaterial.Row mat, int dir, Point point=null, int bridgeHeight=-1)
Definition: RenderRow.cs:403
bool isActive
Definition: ScreenGuide.cs:15
MeshPass passGuideBlock
Definition: ScreenGuide.cs:5
MeshPass passGuideFloor
Definition: ScreenGuide.cs:7
virtual float RepeatSize
Definition: TileType.cs:243
virtual bool IsWallOrFence
Definition: TileType.cs:145
virtual bool IsWater
Definition: TileType.cs:165

References _dir, Scene.actionMode, MeshPass.Add(), Point.ApplyAnime(), ColorProfile.blockColors, Algorithms.WeightCell.blocked, Point.cell, EClass.Colors, DefaultMaterial, RenderData.Draw(), RenderData.DrawRepeat(), RenderRow.GetRenderParam(), BaseGameScreen.guide, Point.HasChara, Point.HasNonWallBlock, Point.HasObj, ColorProfile.BlockColors.Inactive, ScreenGuide.isActive, ActionMode.IsRoofEditMode(), TileType.IsWallOrFence, TileType.IsWater, RenderData.offset, RenderData.pass, BaseTileMap.passBlock, BaseTileMap.passBlockEx, BaseTileMap.passFloor, BaseTileMap.passFloorEx, BaseTileMap.passFloorWater, ScreenGuide.passGuideBlock, ScreenGuide.passGuideFloor, BaseTileMap.passLiquid, Point.Position(), GameSetting.render, RenderRow.renderData, BaseTileMap.rendererBlockMarker, BaseTileMap.rendererFloorMarker, renderRow, TileType.RepeatSize, EClass.scene, EClass.screen, BaseTileMap.SetRoofHeight(), EClass.setting, Cell.skipRender, BaseGameScreen.tileMap, GameSetting.RenderSetting.tileMarkerZ, GameSetting.RenderSetting.tileMarkerZFloor, tileRow, tileType, Point.x, and Point.z.

Referenced by PartialMap.Apply(), TaskBuild.DrawMarker(), and AM_Build.OnRenderTile().

◆ OnSelected()

virtual void Recipe.OnSelected ( )
inlinevirtual

Reimplemented in RecipeCard.

Definition at line 837 of file Recipe.cs.

838 {
839 }

Referenced by UIRecipeInfo.Refresh().

◆ Rotate()

virtual void Recipe.Rotate ( )
inlinevirtual

Reimplemented in RecipeCard.

Definition at line 845 of file Recipe.cs.

846 {
847 if (EInput.isShiftDown || Input.GetMouseButton(1))
848 {
849 _dir--;
850 }
851 else
852 {
853 _dir++;
854 }
856 {
858 {
859 _dir = 0;
860 }
861 if (_dir < 0)
862 {
863 _dir = tileType.MaxAltitude - 1;
864 }
865 }
866 else
867 {
868 int num = tileRow._tiles.Length;
870 {
871 num = 2;
872 }
873 if (_dir < 0)
874 {
875 _dir = num - 1;
876 }
877 if (_dir >= num)
878 {
879 _dir = 0;
880 }
881 }
882 if ((bool)BuildMenu.Instance)
883 {
885 }
886 }
UIRecipeInfo info1
Definition: BuildMenu.cs:27
Definition: EInput.cs:8
static bool isShiftDown
Definition: EInput.cs:272
int[] _tiles
Definition: RenderRow.cs:12
virtual int MaxAltitude
Definition: TileType.cs:210
static TileTypeDoor Door
Definition: TileType.cs:97
void OnRotate()

References _dir, RenderRow._tiles, TileType.AltitudeAsDir, TileType.Door, BuildMenu.info1, BuildMenu.Instance, EInput.isShiftDown, TileType.MaxAltitude, UIRecipeInfo.OnRotate(), tileRow, tileType, and RenderRow.tileType.

Referenced by AM_Adv._OnUpdateInput(), and AM_Build.RotateUnderMouse().

◆ SaveLastIngredients()

void Recipe.SaveLastIngredients ( )
inline

Definition at line 995 of file Recipe.cs.

996 {
997 List<int> list = new List<int>();
998 foreach (Ingredient ingredient in ingredients)
999 {
1000 int item = ((ingredient.thing != null) ? ingredient.thing.uid : 0);
1001 list.Add(item);
1002 }
1004 }
Dictionary< string, List< int > > lastIngredients
string id
Definition: Recipe.cs:178

References id, ingredients, item, RecipeManager.lastIngredients, EClass.player, Player.recipes, Recipe.Ingredient.thing, and Card.uid.

Referenced by DropdownGrid.Activate(), LayerCraft.OnClickCraft(), LayerCraft.RefreshCategory(), and ButtonGrid.SetIngredient().

◆ SetDir()

virtual void Recipe.SetDir ( int  d)
inlinevirtual

Reimplemented in RecipeCard.

Definition at line 888 of file Recipe.cs.

889 {
890 _dir = d;
891 if ((bool)BuildMenu.Instance)
892 {
894 }
895 }

References _dir, BuildMenu.info1, BuildMenu.Instance, and UIRecipeInfo.OnRotate().

Referenced by TaskBuild.GetHitResult(), and UIRecipeInfo.Refresh().

◆ SetImage()

virtual void Recipe.SetImage ( Image  icon)
inlinevirtual

Definition at line 902 of file Recipe.cs.

903 {
904 renderRow.SetImage(icon, null, renderRow.GetColorInt((ingredients != null && ingredients.Count > 0 && ingredients[0].thing != null) ? ingredients[0].thing.material : DefaultMaterial), setNativeSize: true, 0, idSkin);
905 }
void SetImage(Image image, Sprite sprite=null, int matCol=0, bool setNativeSize=true, int dir=0, int idSkin=0, Card card=null)
Definition: RenderRow.cs:361

References DefaultMaterial, RenderRow.GetColorInt(), idSkin, ingredients, renderRow, and RenderRow.SetImage().

Referenced by ButtonGrid.SetCraftRecipe().

◆ SetTextDifficulty()

void Recipe.SetTextDifficulty ( UIText  text)
inline

Definition at line 956 of file Recipe.cs.

957 {
958 Element reqSkill = source.GetReqSkill();
960 string text2 = reqSkill.Name + " " + reqSkill.Value;
961 text.SetText(text2);
962 }
ElementContainerCard elements
Definition: Card.cs:42
Element GetOrCreateElement(Element ele)
void SetText(string s)
Definition: UIText.cs:163

References Card.elements, ElementContainer.GetOrCreateElement(), RecipeSource.GetReqSkill(), EClass.pc, UIText.SetText(), source, and Element.Value.

Referenced by UIRecipeInfo.RefreshQuality().

◆ ShouldShowHighlight()

virtual bool Recipe.ShouldShowHighlight ( HitResult  r)
inlinevirtual

Definition at line 460 of file Recipe.cs.

461 {
462 return r != HitResult.Valid;
463 }
HitResult
Definition: HitResult.cs:2

◆ ToggleTrack()

void Recipe.ToggleTrack ( QuestTrackCraft  quest)
inline

Definition at line 1020 of file Recipe.cs.

1021 {
1022 if (quest != null && quest.idRecipe == id)
1023 {
1024 EClass.game.quests.Remove(quest);
1025 }
1026 else
1027 {
1028 if (quest != null)
1029 {
1030 EClass.game.quests.Remove(quest);
1031 }
1032 QuestTrackCraft questTrackCraft = Quest.Create("track_craft") as QuestTrackCraft;
1033 questTrackCraft.SetRecipe(this);
1034 EClass.game.quests.Start(questTrackCraft);
1035 }
1037 {
1038 EClass.player.questTracker = true;
1039 EClass.ui.widgets.ActivateWidget("QuestTracker");
1041 }
1043 }
static UI ui
Definition: EClass.cs:17
void Remove(Quest q)
Definition: QuestManager.cs:67
Quest Start(string id, string idGlobalChara)
Definition: QuestManager.cs:41
void SetRecipe(Recipe r)
static Quest Create(string _id, string _idPerson=null, Chara c=null, bool assignQuest=true)
Definition: Quest.cs:241
static void RefreshButtons()
static WidgetQuestTracker Instance

References Quest.Create(), EClass.game, QuestTrackCraft.idRecipe, WidgetQuestTracker.Instance, Game.quests, WidgetQuestTracker.Refresh(), WidgetHotbar.RefreshButtons(), QuestManager.Remove(), QuestTrackCraft.SetRecipe(), QuestManager.Start(), and EClass.ui.

Referenced by WidgetCodex.RefreshList(), and LayerCraft.RefreshTrackButton().

◆ TryGetFirstTimeBonus()

void Recipe.TryGetFirstTimeBonus ( )
inline

Definition at line 983 of file Recipe.cs.

984 {
985 if (HasFirstTimeBonus())
986 {
988 Element reqSkill = source.GetReqSkill();
989 int num = 1 + ((!IsStaticLV()) ? (reqSkill.Value / 20) : 0);
990 Msg.Say("firstTimeCraft", Name);
991 EClass.pc.Pick(ThingGen.Create("ticket_fortune").SetNum(num));
992 }
993 }
Thing Pick(Thing t, bool msg=true, bool tryStack=true)
Definition: Chara.cs:4381
string Name
Definition: Recipe.cs:212
bool HasFirstTimeBonus()
Definition: Recipe.cs:970

References RecipeManager.craftedRecipes, ThingGen.Create(), RecipeSource.GetReqSkill(), HasFirstTimeBonus(), IsStaticLV(), Name, EClass.pc, Chara.Pick(), EClass.player, Player.recipes, Msg.Say(), Card.SetNum(), source, and Element.Value.

Referenced by AI_UseCrafter.Run().

◆ WriteNote()

virtual void Recipe.WriteNote ( UINote  n)
inlinevirtual

Reimplemented in RecipeCard.

Definition at line 807 of file Recipe.cs.

808 {
809 n.Clear();
810 n.Build();
811 }
void Clear()
Definition: UINote.cs:35
void Build()
Definition: UINote.cs:49

References UINote.Build(), and UINote.Clear().

Referenced by UIRecipeInfo.Refresh().

◆ WriteReqFactory()

void Recipe.WriteReqFactory ( UINote  n,
bool  hasFactory = true 
)
inline

Definition at line 813 of file Recipe.cs.

814 {
816 {
817 n.AddHeaderTopic("reqFactory".lang(source.NameFactory.TagColor(hasFactory ? FontColor.Default : FontColor.Bad)));
818 n.Space(8);
819 }
820 }
FontColor
Definition: FontColor.cs:2
string NameFactory
Definition: RecipeSource.cs:75
bool NeedFactory
Definition: RecipeSource.cs:63
UIItem AddHeaderTopic(string text, Sprite sprite=null)
Definition: UINote.cs:89
void Space(int sizeY=0, int sizeX=1)
Definition: UINote.cs:62

References UINote.AddHeaderTopic(), RecipeSource.NameFactory, RecipeSource.NeedFactory, source, and UINote.Space().

Referenced by ButtonGrid.WriteReqMat().

◆ WriteReqSkill()

void Recipe.WriteReqSkill ( UINote  n)
inline

Definition at line 822 of file Recipe.cs.

823 {
824 n.AddHeaderTopic("reqSkill");
825 Element reqSkill = source.GetReqSkill();
826 int value = EClass.pc.elements.GetOrCreateElement(reqSkill).Value;
827 Color textColor = EClass.Colors.Skin.GetTextColor((value >= reqSkill.Value) ? FontColor.Good : FontColor.Warning);
828 n.AddText(null, reqSkill.Name + " " + reqSkill.Value + " (" + value + ")", textColor).text1.SetSize(-1);
829 n.Space(8);
830 }
SkinColorProfile Skin
virtual string Name
Definition: ELEMENT.cs:309
Color GetTextColor(FontColor fontColor)
UIText text1
Definition: UIItem.cs:6
UIItem AddText(string text, FontColor color=FontColor.DontChange)
Definition: UINote.cs:113
UIText SetSize(int a)
Definition: UIText.cs:231

References UINote.AddHeaderTopic(), UINote.AddText(), Color, EClass.Colors, Card.elements, ElementContainer.GetOrCreateElement(), RecipeSource.GetReqSkill(), SkinColorProfile.GetTextColor(), Element.Name, EClass.pc, UIText.SetSize(), ColorProfile.Skin, source, UINote.Space(), UIItem.text1, and Element.Value.

Referenced by ButtonGrid.WriteReqMat().

Member Data Documentation

◆ _dir

◆ _source

RecipeSource Recipe._source

Definition at line 202 of file Recipe.cs.

Referenced by Create().

◆ id

◆ idMat

int Recipe.idMat = -1

Definition at line 196 of file Recipe.cs.

Referenced by Build(), Create(), and GetColorMaterial().

◆ idSkin

◆ IngAsProduct

bool Recipe.IngAsProduct

◆ ingredients

◆ recipeCache

Dictionary<string, Recipe> Recipe.recipeCache = new Dictionary<string, Recipe>()
static

Definition at line 175 of file Recipe.cs.

Referenced by GetOrCreate().

◆ state

State Recipe.state

Definition at line 200 of file Recipe.cs.

◆ sync

int Recipe.sync

Definition at line 194 of file Recipe.cs.

◆ UseStock

◆ VirtualBlock

Property Documentation

◆ CanRotate

virtual bool Recipe.CanRotate
get

Definition at line 298 of file Recipe.cs.

299 {
300 get
301 {
302 if (tileType.CanRotate(buildMode: true))
303 {
304 return tileRow._tiles.Length > 1;
305 }
306 return false;
307 }
308 }
virtual bool CanRotate(bool buildMode)
Definition: TileType.cs:298

Referenced by ActionMode.GetHintText(), and AM_Build.RotateUnderMouse().

◆ CostMoney

virtual int Recipe.CostMoney
get

Definition at line 296 of file Recipe.cs.

Referenced by UIRecipeInfo.Refresh(), and UIRecipeInfo.RefreshList().

◆ DefaultMaterial

SourceMaterial.Row Recipe.DefaultMaterial
get

◆ H

virtual int Recipe.H
get

Definition at line 268 of file Recipe.cs.

269 {
270 get
271 {
272 if (_dir % 2 != 0)
273 {
274 return renderRow.W;
275 }
276 return renderRow.H;
277 }
278 }

Referenced by UIInspector.DrawHighlight(), TaskBuild.OnProgressComplete(), HotItemHeld.OnRenderTile(), and AI_HaulResource.Run().

◆ IsBlock

virtual bool Recipe.IsBlock
get

◆ IsBridge

◆ IsFloor

bool Recipe.IsFloor
get

Definition at line 242 of file Recipe.cs.

Referenced by AM_Build.HitTest(), and TaskBuild.OnProgressComplete().

◆ IsFloorOrBridge

virtual bool Recipe.IsFloorOrBridge
get

Definition at line 226 of file Recipe.cs.

Referenced by HasSameTile(), and AM_Build.OnRenderTile().

◆ IsObj

bool Recipe.IsObj
get

Definition at line 244 of file Recipe.cs.

Referenced by HasSameTile().

◆ IsThing

virtual bool Recipe.IsThing
get

Definition at line 252 of file Recipe.cs.

Referenced by TaskBuild.GetHitResult(), and AM_Build.IsFillMode().

◆ IsWallOrFence

bool Recipe.IsWallOrFence
get

◆ MaxAltitude

int Recipe.MaxAltitude
get

Definition at line 228 of file Recipe.cs.

229 {
230 get
231 {
233 {
234 return tileType.MaxAltitude;
235 }
236 return 0;
237 }
238 }
virtual bool IsThing
Definition: Recipe.cs:252
virtual BlockRenderMode blockRenderMode
Definition: TileType.cs:281

Referenced by HotItemHeld.CanChangeHeightByWheel(), AM_Build.InputWheel(), and UIPlaceHelper.Refresh().

◆ Mold

virtual Card Recipe.Mold
get

Definition at line 254 of file Recipe.cs.

Referenced by TaskBuild._GetHitResult().

◆ MultiSize

bool Recipe.MultiSize
get

Definition at line 282 of file Recipe.cs.

283 {
284 get
285 {
286 if (W == 1)
287 {
288 return H != 1;
289 }
290 return true;
291 }
292 }
virtual int H
Definition: Recipe.cs:269
virtual int W
Definition: Recipe.cs:257

Referenced by UIInspector.DrawHighlight(), TaskBuild.GetHitResult(), and HotItemHeld.OnRenderTile().

◆ Name

string Recipe.Name
get

Definition at line 212 of file Recipe.cs.

Referenced by GridItemRecipe.SetButton(), UICardInfo.SetRecipe(), and TryGetFirstTimeBonus().

◆ RecipeLv

int Recipe.RecipeLv
get

Definition at line 240 of file Recipe.cs.

Referenced by GetQualityBonus().

◆ renderRow

◆ RequireIngredients

virtual bool Recipe.RequireIngredients
get

Definition at line 280 of file Recipe.cs.

Referenced by BuildIngredientList(), and HitSummary.Execute().

◆ source

◆ tileRow

virtual TileRow Recipe.tileRow
get

◆ tileSelector

BaseTileSelector Recipe.tileSelector
get

Definition at line 294 of file Recipe.cs.

◆ tileType

◆ W

virtual int Recipe.W
get

Definition at line 256 of file Recipe.cs.

257 {
258 get
259 {
260 if (_dir % 2 != 0)
261 {
262 return renderRow.H;
263 }
264 return renderRow.W;
265 }
266 }

Referenced by UIInspector.DrawHighlight(), TaskBuild.OnProgressComplete(), HotItemHeld.OnRenderTile(), and AI_HaulResource.Run().


The documentation for this class was generated from the following file: