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

Classes

class  Ingredient
 

Public Types

enum  State { Valid , Invalid }
 

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 rnd (int a)
 
static int curve (int a, int start, int step, int rate=75)
 
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

◆ 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 610 of file Recipe.cs.

611 {
612 if (mat == -1)
613 {
614 mat = 2;
615 }
616 EClass.pc.PlaySound(EClass.sources.materials.rows[mat].GetSoundImpact());
617 pos.cell.isModified = true;
618 switch (source.type)
619 {
620 case "Block":
621 {
622 int ramp = tileRow.id;
623 if (ramp == 3)
624 {
625 ramp = EClass.sources.materials.rows[mat].ramp;
626 }
628 {
629 EClass._map.SetRoofBlock(pos.x, pos.z, mat, ramp, dir, altitude);
630 break;
631 }
632 if (pos.HasObj && !pos.sourceObj.tileType.CanBuiltOnBlock)
633 {
635 EClass._map.SetObj(pos.x, pos.z);
636 }
637 EClass._map.SetBlock(pos.x, pos.z, mat, ramp, dir);
638 if (tileType.IsBlockPass && pos.HasChara)
639 {
640 foreach (Chara item in pos.ListCharas())
641 {
642 chara.Kick(item, ignoreSelf: false, karmaLoss: false);
643 }
644 }
646 {
647 pos.cell.objDir = dir;
648 }
649 {
650 foreach (Card item2 in pos.ListCards())
651 {
652 if (item2.isThing && item2.placeState == PlaceState.roaming)
653 {
654 item2._Move(item2.pos.GetNearestPoint());
655 }
656 }
657 break;
658 }
659 }
660 case "Floor":
661 if (pos.HasObj && pos.sourceObj.tileType.RemoveOnFloorChange && (!BuildMenu.Instance || !EClass.debug.ignoreBuildRule))
662 {
663 EClass._map.SetObj(pos.x, pos.z);
664 }
665 EClass._map.SetFloor(pos.x, pos.z, mat, tileRow.id, dir);
666 break;
667 case "Bridge":
668 if (pos.sourceObj.tileType.RemoveOnFloorChange)
669 {
670 EClass._map.SetObj(pos.x, pos.z);
671 }
672 EClass._map.SetBridge(pos.x, pos.z, Mathf.Clamp(bridgeHeight + altitude, 0, 255), mat, tileRow.id, dir);
673 break;
674 case "Obj":
675 EClass._map.SetObj(pos.x, pos.z, mat, tileRow.id, 1, dir, ignoreRandomMat: true);
677 {
678 EClass._map.SetBlockDir(pos.x, pos.z, dir);
679 }
680 if (pos.growth != null)
681 {
683 }
684 break;
685 }
686 }
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:5117
virtual bool isThing
Definition: Card.cs:1957
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:5404
PlaceState placeState
Definition: Card.cs:79
Point pos
Definition: Card.cs:55
Definition: Chara.cs:10
void Kick(Point p, bool ignoreSelf=false)
Definition: Chara.cs:5174
bool ignoreBuildRule
Definition: CoreDebug.cs:184
Definition: EClass.cs:5
static Scene scene
Definition: EClass.cs:30
static Map _map
Definition: EClass.cs:18
static SourceManager sources
Definition: EClass.cs:42
static Chara pc
Definition: EClass.cs:14
static CoreDebug debug
Definition: EClass.cs:48
void SetDefaultStage()
Definition: GrowSystem.cs:255
void SetBridge(int x, int z, int height=0, int idMat=0, int idBridge=0, int dir=0)
Definition: Map.cs:966
void SetBlockDir(int x, int z, int dir)
Definition: Map.cs:1159
void MineObjSound(Point point)
Definition: Map.cs:1915
void SetFloor(int x, int z, int idMat=0, int idFloor=0)
Definition: Map.cs:951
void SetBlock(int x, int z, int idMat=0, int idBlock=0)
Definition: Map.cs:990
void SetRoofBlock(int x, int z, int idMat, int idBlock, int dir, int height)
Definition: Map.cs:981
void SetObj(int x, int z, int id=0, int value=1, int dir=0)
Definition: Map.cs:1522
List< Card > ListCards(bool includeMasked=false)
Definition: Point.cs:1015
int x
Definition: Point.cs:36
int z
Definition: Point.cs:39
SourceObj.Row sourceObj
Definition: Point.cs:69
List< Chara > ListCharas()
Definition: Point.cs:1135
bool HasObj
Definition: Point.cs:137
Point GetNearestPoint(bool allowBlock=false, bool allowChara=true, bool allowInstalled=true, bool ignoreCenter=false)
Definition: Point.cs:595
GrowSystem growth
Definition: Point.cs:77
bool HasChara
Definition: Point.cs:226
string type
Definition: RecipeSource.cs:7
virtual TileRow tileRow
Definition: Recipe.cs:191
virtual TileType tileType
Definition: Recipe.cs:198
RecipeSource source
Definition: Recipe.cs:187
ActionMode actionMode
Definition: Scene.cs:77
SourceMaterial materials
int id
Definition: TileRow.cs:8
virtual bool AltitudeAsDir
Definition: TileType.cs:205
virtual bool ChangeBlockDir
Definition: TileType.cs:123
virtual bool IsBlockPass
Definition: TileType.cs:149

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, Chara.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 605 of file Recipe.cs.

606 {
607 Build(task.owner, null, task.pos, (ingredients.Count > 0) ? ingredients[0].mat : task.recipe.idMat, task.dir, task.altitude, task.bridgeHeight);
608 }
new Chara owner
Definition: AIAct.cs:14
int idMat
Definition: Recipe.cs:179
List< Ingredient > ingredients
Definition: Recipe.cs:164
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 509 of file Recipe.cs.

510 {
512 {
514 }
515 }
List< Recipe.Ingredient > GetIngredients()
virtual bool RequireIngredients
Definition: Recipe.cs:263
bool UseStock
Definition: Recipe.cs:167

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 517 of file Recipe.cs.

518 {
519 UseStock = true;
520 Ingredient item = new Ingredient
521 {
522 id = t.id,
523 tag = null,
524 req = 1,
525 uid = t.uid,
526 thing = t,
527 mat = t.material.id
528 };
529 ingredients.Add(item);
530 }
string id
Definition: Card.cs:31
int uid
Definition: Card.cs:118

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 536 of file Recipe.cs.

537 {
538 Thing thing = null;
539 string type = source.type;
540 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)));
541 if (thing == null)
542 {
543 return null;
544 }
545 thing.trait.OnCrafted(this);
546 thing.SetBlessedState(blessed);
547 if (model)
548 {
549 return thing;
550 }
551 Msg.Say("crafted", thing);
552 thing = EClass.pc.AddCard(thing) as Thing;
553 if (thing.GetRootCard() == EClass.pc)
554 {
555 EClass.pc.HoldCard(thing);
556 }
557 return thing;
558 }
Card AddCard(Card c)
Definition: Card.cs:2887
virtual void SetBlessedState(BlessedState s)
Definition: Card.cs:3572
Trait trait
Definition: Card.cs:49
Card GetRootCard()
Definition: Card.cs:3173
void HoldCard(Card t, int num=-1)
Definition: Chara.cs:4084
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:467
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)
Definition: Trait.cs:614

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 308 of file Recipe.cs.

309 {
310 string type = _source.type;
311 Recipe recipe = (_source.isBridgePillar ? new RecipeBridgePillar() : (type.IsEmpty() ? new RecipeCard() : ((type == "Custom") ? new RecipeCustom() : new Recipe())));
312 recipe.id = _source.id;
313 recipe._source = _source;
314 recipe.idMat = idMat;
315 if (ing != null)
316 {
317 recipe.BuildIngredientList(ing);
318 if (ing.trait is TraitTile)
319 {
320 recipe.VirtualBlock = true;
321 }
322 }
323 return recipe;
324 }
Definition: Recipe.cs:7
RecipeSource _source
Definition: Recipe.cs:185
virtual void BuildIngredientList()
Definition: Recipe.cs:509

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 326 of file Recipe.cs.

327 {
328 RecipeSource recipeSource = RecipeManager.dict.TryGetValue(t.id);
329 if (recipeSource == null)
330 {
331 return null;
332 }
333 RecipeCard recipeCard = new RecipeCard
334 {
335 id = recipeSource.id,
336 _source = recipeSource,
337 IngAsProduct = true,
338 idSkin = t.idSkin
339 };
340 recipeCard.BuildIngredientList(t);
341 if (t.uid == 0 || recipeCard.ingredients[0].uid == 0 || recipeCard.ingredients[0].thing == null)
342 {
343 Debug.LogError("expection: invalid ingredient " + t);
344 }
345 return recipeCard;
346 }
override void BuildIngredientList()
Definition: RecipeCard.cs:65
static Dictionary< string, RecipeSource > dict
int idSkin
Definition: Recipe.cs:181
bool IngAsProduct
Definition: Recipe.cs:170

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 348 of file Recipe.cs.

349 {
351 Recipe orCreate = GetOrCreate(EClass.sources.cards.map[id].RecipeID);
352 orCreate.BuildIngredientList();
353 Msg.Say("dropReward");
354 foreach (Ingredient ingredient in orCreate.ingredients)
355 {
356 Thing thing = ThingGen.Create(ingredient.id).SetNum(ingredient.req);
357 if (ingredient == orCreate.ingredients[0])
358 {
359 thing.ChangeMaterial(idMatMain);
360 thing.SetNum(num);
361 }
362 EClass.player.DropReward(thing, silent: true);
363 }
364 }
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
Definition: Card.cs:2838
Thing SetNum(int a)
Definition: Card.cs:3242
static Player player
Definition: EClass.cs:12
Thing DropReward(Thing t, bool silent=false)
Definition: Player.cs:2320
static void BuildList()
static Recipe GetOrCreate(string id)
Definition: Recipe.cs:293
Dictionary< string, CardRow > map
Definition: SourceCard.cs:8
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 877 of file Recipe.cs.

878 {
879 return IO.DeepCopy(this);
880 }
Definition: IO.cs:11

◆ GetBoxType()

BaseTileSelector.BoxType Recipe.GetBoxType ( )
inline

Definition at line 448 of file Recipe.cs.

449 {
451 {
452 return BaseTileSelector.BoxType.Box;
453 }
454 return BaseTileSelector.BoxType.Fence;
455 }
virtual BaseTileSelector.BoxType BoxType
Definition: TileType.cs:261

References TileType.BoxType, and tileType.

◆ GetColorMaterial()

virtual SourceMaterial.Row Recipe.GetColorMaterial ( )
inlinevirtual

Definition at line 481 of file Recipe.cs.

482 {
483 if (idMat != -1)
484 {
485 return EClass.sources.materials.rows[idMat];
486 }
487 if (UseStock)
488 {
489 ingredients[0].RefreshThing();
490 Thing thing = ingredients[0].thing;
491 if (thing != null)
492 {
493 if (!thing.isDyed)
494 {
495 return thing.material;
496 }
497 return thing.DyeMat;
498 }
499 return EClass.sources.materials.rows[3];
500 }
501 int num = ((ingredients.Count > 0) ? ingredients[source.colorIng].mat : 3);
502 if (num == -1)
503 {
504 num = 3;
505 }
506 return EClass.sources.materials.rows[num];
507 }
SourceMaterial.Row DyeMat
Definition: Card.cs:1816
SourceMaterial.Row material
Definition: Card.cs:1927
bool isDyed
Definition: Card.cs:430

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 457 of file Recipe.cs.

458 {
459 if (UseStock)
460 {
461 Thing thing = ingredients[0].thing;
462 return renderRow.GetColorInt(thing.isDyed ? thing.DyeMat : thing.material);
463 }
465 }
SourceMaterial.Row DefaultMaterial
Definition: Recipe.cs:189
virtual RenderRow renderRow
Definition: Recipe.cs:193
int GetColorInt(SourceMaterial.Row mat)
Definition: RenderRow.cs:417

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 782 of file Recipe.cs.

783 {
784 return renderRow.GetText("detail").IsEmpty(source.GetDetail());
785 }
string GetDetail()
string GetText(string id="name", bool returnNull=false)
Definition: SourceData.cs:553

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 422 of file Recipe.cs.

423 {
424 if (source.row is SourceBlock.Row)
425 {
426 return (source.row as SourceBlock.Row).idThing;
427 }
428 if (source.row is SourceFloor.Row)
429 {
430 if (!IsBridge)
431 {
432 return "floor";
433 }
434 return "platform";
435 }
436 if (source.row is SourceObj.Row)
437 {
438 return "obj";
439 }
440 return null;
441 }
RenderRow row
Definition: RecipeSource.cs:5
bool IsBridge
Definition: Recipe.cs:233

References IsBridge, RecipeSource.row, and source.

Referenced by UIRecipeInfo.Refresh().

◆ GetMainMaterial()

virtual SourceMaterial.Row Recipe.GetMainMaterial ( )
inlinevirtual

Definition at line 467 of file Recipe.cs.

468 {
469 int num = -1;
470 if (ingredients.Count > 0)
471 {
472 num = ((ingredients[0].thing == null) ? ingredients[0].mat : ingredients[0].thing.material.id);
473 }
474 if (num == -1)
475 {
476 num = 3;
477 }
478 return EClass.sources.materials.rows[num];
479 }

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 913 of file Recipe.cs.

914 {
915 int num = 999;
916 for (int i = 0; i < ingredients.Count; i++)
917 {
918 Ingredient ingredient = ingredients[i];
919 Thing thing = ingredient.thing;
920 int num2 = 0;
921 if (!ingredient.optional || thing != null)
922 {
923 if (thing != null && !thing.isDestroyed)
924 {
925 num2 = thing.Num / ingredient.req;
926 }
927 if (num2 < num)
928 {
929 num = num2;
930 }
931 }
932 }
933 return num;
934 }
bool isDestroyed
Definition: Card.cs:71

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 760 of file Recipe.cs.

761 {
762 if (UseStock && ingredients[0].thing == null)
763 {
764 return "";
765 }
766 string text = (UseStock ? ingredients[0].thing.Name : source.Name);
767 if (text == "")
768 {
769 text = ("card_" + source.id).lang();
770 }
771 if (text == "*r")
772 {
773 text = source.row.GetText("aka");
774 }
775 if (text == "*r")
776 {
777 text = "(" + source.row.GetField<string>("id") + ")";
778 }
779 return text.ToTitleCase();
780 }

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 293 of file Recipe.cs.

294 {
295 Recipe recipe = recipeCache.TryGetValue(id);
296 if (recipe == null)
297 {
298 RecipeSource recipeSource = RecipeManager.dict.TryGetValue(id);
299 if (recipeSource != null)
300 {
301 recipe = Create(recipeSource);
302 recipeCache.Add(id, recipe);
303 }
304 }
305 return recipe;
306 }
static Dictionary< string, Recipe > recipeCache
Definition: Recipe.cs:158
static Recipe Create(RecipeSource _source, int idMat=-1, Thing ing=null)
Definition: Recipe.cs:308

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

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

◆ GetQualityBonus()

int Recipe.GetQualityBonus ( )
inline

Definition at line 380 of file Recipe.cs.

381 {
382 if (IsStaticLV())
383 {
384 return 0;
385 }
386 Element reqSkill = source.GetReqSkill();
387 int num = reqSkill.Value - EClass.pc.Evalue(reqSkill.id);
388 int num2 = 0;
389 if (num > 0)
390 {
391 if (num < 5)
392 {
393 return 0;
394 }
395 return -(num - 4) * 10;
396 }
397 num2 += EClass.curve(-num, 10, 20, 80) / 10 * 10 + 10;
398 if (RecipeLv > 0)
399 {
400 num2 += (int)Mathf.Sqrt(RecipeLv - 1) * 10;
401 }
402 return num2;
403 }
int Evalue(int ele)
Definition: Card.cs:2431
static int curve(int a, int start, int step, int rate=75)
Definition: EClass.cs:55
int id
Definition: ELEMENT.cs:240
Element GetReqSkill()
int RecipeLv
Definition: Recipe.cs:223
bool IsStaticLV()
Definition: Recipe.cs:366

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 986 of file Recipe.cs.

987 {
988 QuestTrackCraft result = null;
989 foreach (Quest item in EClass.game.quests.list)
990 {
991 if (item is QuestTrackCraft)
992 {
993 result = item as QuestTrackCraft;
994 break;
995 }
996 }
997 return result;
998 }
static Game game
Definition: EClass.cs:8
QuestManager quests
Definition: Game.cs:179
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 405 of file Recipe.cs.

406 {
407 if (source.row is SourceBlock.Row)
408 {
409 return (source.row as SourceBlock.Row).id;
410 }
411 if (source.row is SourceFloor.Row)
412 {
413 return (source.row as SourceFloor.Row).id;
414 }
415 if (source.row is SourceObj.Row)
416 {
417 return (source.row as SourceObj.Row).id;
418 }
419 return -1;
420 }

References RecipeSource.row, and source.

Referenced by UIRecipeInfo.Refresh().

◆ GetRenderer()

virtual IRenderer Recipe.GetRenderer ( )
inlinevirtual

Reimplemented in RecipeCard.

Definition at line 812 of file Recipe.cs.

813 {
814 return tileRow.renderData;
815 }
RenderData renderData
Definition: RenderRow.cs:71

References RenderRow.renderData, and tileRow.

Referenced by UICardInfo.UpdateRecipe().

◆ GetSortVal()

int Recipe.GetSortVal ( )
inline

Definition at line 944 of file Recipe.cs.

945 {
946 Element reqSkill = source.GetReqSkill();
947 return reqSkill.source.id * 10000 - reqSkill.Value;
948 }
int Value
Definition: ELEMENT.cs:282

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

Referenced by LayerCraft.RefreshCategory().

◆ HasFirstTimeBonus()

bool Recipe.HasFirstTimeBonus ( )
inline

Definition at line 950 of file Recipe.cs.

951 {
952 if (IsStaticLV())
953 {
954 return false;
955 }
956 if (EClass.player.recipes.craftedRecipes.Contains(id))
957 {
958 return false;
959 }
960 return true;
961 }
RecipeManager recipes
Definition: Player.cs:898
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 560 of file Recipe.cs.

561 {
562 if (IsObj)
563 {
564 if (point.growth != null && point.sourceObj == tileRow && point.cell.matObj == GetColorMaterial())
565 {
566 return true;
567 }
568 if (dir == point.cell.objDir && point.cell.matObj == GetColorMaterial() && point.sourceObj == tileRow)
569 {
570 return true;
571 }
572 }
573 else if (IsBridge)
574 {
575 if (dir == point.cell.floorDir && point.matBridge == GetColorMaterial() && point.sourceBridge == tileRow && Mathf.Clamp(bridgeHeight + altitude, 0, 255) == point.cell.bridgeHeight)
576 {
577 return true;
578 }
579 }
580 else if (IsFloorOrBridge)
581 {
582 if (dir == point.cell.floorDir && point.matFloor == GetColorMaterial() && point.sourceFloor == tileRow)
583 {
584 return true;
585 }
586 }
587 else if (IsWallOrFence)
588 {
589 if (point.matBlock == GetColorMaterial() && point.sourceBlock == tileRow && dir == point.cell.blockDir)
590 {
591 return true;
592 }
593 }
594 else if (IsBlock && point.matBlock == GetColorMaterial() && point.sourceBlock == tileRow)
595 {
596 if (point.sourceBlock.tileType.AltitudeAsDir && dir != point.cell.objDir)
597 {
598 return false;
599 }
600 return true;
601 }
602 return false;
603 }
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:227
virtual bool IsFloorOrBridge
Definition: Recipe.cs:209
virtual bool IsBlock
Definition: Recipe.cs:229
bool IsWallOrFence
Definition: Recipe.cs:231
virtual SourceMaterial.Row GetColorMaterial()
Definition: Recipe.cs:481

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, Point.sourceBlock, Point.sourceBridge, Point.sourceFloor, Point.sourceObj, and tileRow.

Referenced by TaskBuild.GetHitResult().

◆ IsCraftable()

bool Recipe.IsCraftable ( )
inline

Definition at line 887 of file Recipe.cs.

888 {
889 foreach (Ingredient ingredient in ingredients)
890 {
891 if (ingredient.optional)
892 {
893 continue;
894 }
895 ThingStack thingStack = EClass._map.Stocked.ListThingStack(ingredient, StockSearchMode.AroundPC);
896 bool flag = false;
897 foreach (Thing item in thingStack.list)
898 {
899 if (item.Num >= ingredient.req)
900 {
901 flag = true;
902 break;
903 }
904 }
905 if (!flag)
906 {
907 return false;
908 }
909 }
910 return true;
911 }
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 366 of file Recipe.cs.

367 {
368 switch (source.idFactory)
369 {
370 case "factory_floor":
371 case "factory_block":
372 case "factory_wall":
373 case "factory_platform":
374 return true;
375 default:
376 return renderRow.Category.IsChildOf("block");
377 }
378 }
string idFactory
Definition: RecipeSource.cs:85
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 821 of file Recipe.cs.

822 {
823 }

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 688 of file Recipe.cs.

689 {
690 if (dir != -1)
691 {
692 _dir = dir;
693 }
694 RenderParam renderParam = tileRow.GetRenderParam(DefaultMaterial, _dir, point, bridgeHeight);
695 renderParam.matColor = (active ? EClass.Colors.blockColors.Active : EClass.Colors.blockColors.Inactive);
696 point.ApplyAnime(renderParam);
697 if (tileType.IsWater)
698 {
700 {
701 EClass.screen.guide.passGuideFloor.Add(point, (float)result, 0.3f);
702 }
703 return;
704 }
706 {
707 Vector3 v = point.Position();
709 {
711 }
712 }
714 {
715 if (bridgeHeight > 0 && !point.cell.skipRender && EClass.screen.guide.isActive)
716 {
717 EClass.screen.guide.passGuideFloor.Add(point, (float)result, 0.3f);
718 }
719 if (!tileType.IsWallOrFence && (point.HasChara || (point.HasObj && point.cell.blocked)))
720 {
721 Vector3 v2 = point.Position();
723 {
725 }
726 return;
727 }
729 {
730 EClass.screen.tileMap.SetRoofHeight(renderParam, point.cell, point.x, point.z, 0, bridgeHeight, tileType.IsWallOrFence ? _dir : (-1), ignoreAltitudeY: true);
731 }
732 renderParam.y = renderParam.y - EClass.screen.tileMap.rendererBlockMarker.offset.y + renderRow.renderData.offset.y;
733 renderParam.z += EClass.setting.render.tileMarkerZ;
734 int num = ((tileType.blockRenderMode != BlockRenderMode.Pillar) ? 1 : (_dir + 1 + ((_dir >= 7) ? _dir : 0)));
735 if (num == 1)
736 {
738 }
739 else
740 {
742 }
743 }
745 {
746 if (point.HasObj)
747 {
748 _ = ref point.Position();
749 }
750 renderParam.z += ((point.cell.liquidLv > 0) ? (-0.01f) : EClass.setting.render.tileMarkerZFloor);
752 }
753 else
754 {
755 renderParam.z += EClass.setting.render.tileMarkerZ;
756 renderRow.renderData.Draw(renderParam);
757 }
758 }
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:38
static BaseGameScreen screen
Definition: EClass.cs:32
static GameSetting setting
Definition: EClass.cs:34
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:524
RenderParam ApplyAnime(RenderParam p)
Definition: Point.cs:1289
bool HasNonWallBlock
Definition: Point.cs:182
int _dir
Definition: Recipe.cs:175
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:381
bool isActive
Definition: ScreenGuide.cs:15
MeshPass passGuideBlock
Definition: ScreenGuide.cs:5
MeshPass passGuideFloor
Definition: ScreenGuide.cs:7
virtual float RepeatSize
Definition: TileType.cs:229
virtual bool IsWallOrFence
Definition: TileType.cs:139
virtual bool IsWater
Definition: TileType.cs:159

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 817 of file Recipe.cs.

818 {
819 }

Referenced by UIRecipeInfo.Refresh().

◆ Rotate()

virtual void Recipe.Rotate ( )
inlinevirtual

Reimplemented in RecipeCard.

Definition at line 825 of file Recipe.cs.

826 {
827 if (EInput.isShiftDown || Input.GetMouseButton(1))
828 {
829 _dir--;
830 }
831 else
832 {
833 _dir++;
834 }
836 {
838 {
839 _dir = 0;
840 }
841 if (_dir < 0)
842 {
843 _dir = tileType.MaxAltitude - 1;
844 }
845 }
846 else
847 {
848 int num = tileRow._tiles.Length;
850 {
851 num = 2;
852 }
853 if (_dir < 0)
854 {
855 _dir = num - 1;
856 }
857 if (_dir >= num)
858 {
859 _dir = 0;
860 }
861 }
862 if ((bool)BuildMenu.Instance)
863 {
865 }
866 }
UIRecipeInfo info1
Definition: BuildMenu.cs:27
Definition: EInput.cs:8
static bool isShiftDown
Definition: EInput.cs:261
TileType tileType
Definition: RenderRow.cs:77
int[] _tiles
Definition: RenderRow.cs:12
virtual int MaxAltitude
Definition: TileType.cs:203
static TileTypeDoor Door
Definition: TileType.cs:91
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 975 of file Recipe.cs.

976 {
977 List<int> list = new List<int>();
978 foreach (Ingredient ingredient in ingredients)
979 {
980 int item = ((ingredient.thing != null) ? ingredient.thing.uid : 0);
981 list.Add(item);
982 }
984 }
Dictionary< string, List< int > > lastIngredients
string id
Definition: Recipe.cs:161

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 868 of file Recipe.cs.

869 {
870 _dir = d;
871 if ((bool)BuildMenu.Instance)
872 {
874 }
875 }

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 882 of file Recipe.cs.

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

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

Referenced by ButtonGrid.SetCraftRecipe().

◆ SetTextDifficulty()

void Recipe.SetTextDifficulty ( UIText  text)
inline

Definition at line 936 of file Recipe.cs.

937 {
938 Element reqSkill = source.GetReqSkill();
940 string text2 = reqSkill.Name + " " + reqSkill.Value;
941 text.SetText(text2);
942 }
ElementContainerCard elements
Definition: Card.cs:37
Element GetOrCreateElement(Element ele)
void SetText(string s)
Definition: UIText.cs:159

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 443 of file Recipe.cs.

444 {
445 return r != HitResult.Valid;
446 }
HitResult
Definition: HitResult.cs:2

◆ ToggleTrack()

void Recipe.ToggleTrack ( QuestTrackCraft  quest)
inline

Definition at line 1000 of file Recipe.cs.

1001 {
1002 if (quest != null && quest.idRecipe == id)
1003 {
1004 EClass.game.quests.Remove(quest);
1005 }
1006 else
1007 {
1008 if (quest != null)
1009 {
1010 EClass.game.quests.Remove(quest);
1011 }
1012 QuestTrackCraft questTrackCraft = Quest.Create("track_craft") as QuestTrackCraft;
1013 questTrackCraft.SetRecipe(this);
1014 EClass.game.quests.Start(questTrackCraft);
1015 }
1017 {
1018 EClass.player.questTracker = true;
1019 EClass.ui.widgets.ActivateWidget("QuestTracker");
1021 }
1023 }
static UI ui
Definition: EClass.cs:16
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)
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 963 of file Recipe.cs.

964 {
965 if (HasFirstTimeBonus())
966 {
968 Element reqSkill = source.GetReqSkill();
969 int num = 1 + ((!IsStaticLV()) ? (reqSkill.Value / 20) : 0);
970 Msg.Say("firstTimeCraft", Name);
971 EClass.pc.Pick(ThingGen.Create("ticket_fortune").SetNum(num));
972 }
973 }
Thing Pick(Thing t, bool msg=true, bool tryStack=true)
Definition: Chara.cs:3920
string Name
Definition: Recipe.cs:195
bool HasFirstTimeBonus()
Definition: Recipe.cs:950

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 787 of file Recipe.cs.

788 {
789 n.Clear();
790 n.Build();
791 }
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 793 of file Recipe.cs.

794 {
796 {
797 n.AddHeaderTopic("reqFactory".lang(source.NameFactory.TagColor(hasFactory ? FontColor.Default : FontColor.Bad)));
798 n.Space(8);
799 }
800 }
FontColor
Definition: FontColor.cs:2
string NameFactory
Definition: RecipeSource.cs:73
bool NeedFactory
Definition: RecipeSource.cs:61
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 802 of file Recipe.cs.

803 {
804 n.AddHeaderTopic("reqSkill");
805 Element reqSkill = source.GetReqSkill();
806 int value = EClass.pc.elements.GetOrCreateElement(reqSkill).Value;
807 Color textColor = EClass.Colors.Skin.GetTextColor((value >= reqSkill.Value) ? FontColor.Good : FontColor.Warning);
808 n.AddText(null, reqSkill.Name + " " + reqSkill.Value + " (" + value + ")", textColor).text1.SetSize(-1);
809 n.Space(8);
810 }
SkinColorProfile Skin
virtual string Name
Definition: ELEMENT.cs:294
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:227

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 185 of file Recipe.cs.

Referenced by Create().

◆ id

◆ idMat

int Recipe.idMat = -1

Definition at line 179 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 158 of file Recipe.cs.

Referenced by GetOrCreate().

◆ state

State Recipe.state

Definition at line 183 of file Recipe.cs.

◆ sync

int Recipe.sync

Definition at line 177 of file Recipe.cs.

◆ UseStock

◆ VirtualBlock

Property Documentation

◆ CanRotate

virtual bool Recipe.CanRotate
get

Definition at line 281 of file Recipe.cs.

282 {
283 get
284 {
285 if (tileType.CanRotate(buildMode: true))
286 {
287 return tileRow._tiles.Length > 1;
288 }
289 return false;
290 }
291 }
virtual bool CanRotate(bool buildMode)
Definition: TileType.cs:282

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

◆ CostMoney

virtual int Recipe.CostMoney
get

Definition at line 279 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 251 of file Recipe.cs.

252 {
253 get
254 {
255 if (_dir % 2 != 0)
256 {
257 return renderRow.W;
258 }
259 return renderRow.H;
260 }
261 }

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 225 of file Recipe.cs.

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

◆ IsFloorOrBridge

virtual bool Recipe.IsFloorOrBridge
get

Definition at line 209 of file Recipe.cs.

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

◆ IsObj

bool Recipe.IsObj
get

Definition at line 227 of file Recipe.cs.

Referenced by HasSameTile().

◆ IsThing

virtual bool Recipe.IsThing
get

Definition at line 235 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 211 of file Recipe.cs.

212 {
213 get
214 {
216 {
217 return tileType.MaxAltitude;
218 }
219 return 0;
220 }
221 }
virtual bool IsThing
Definition: Recipe.cs:235
virtual BlockRenderMode blockRenderMode
Definition: TileType.cs:265

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

◆ Mold

virtual Card Recipe.Mold
get

Definition at line 237 of file Recipe.cs.

Referenced by TaskBuild._GetHitResult().

◆ MultiSize

bool Recipe.MultiSize
get

Definition at line 265 of file Recipe.cs.

266 {
267 get
268 {
269 if (W == 1)
270 {
271 return H != 1;
272 }
273 return true;
274 }
275 }
virtual int H
Definition: Recipe.cs:252
virtual int W
Definition: Recipe.cs:240

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

◆ Name

string Recipe.Name
get

Definition at line 195 of file Recipe.cs.

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

◆ RecipeLv

int Recipe.RecipeLv
get

Definition at line 223 of file Recipe.cs.

Referenced by GetQualityBonus().

◆ renderRow

◆ RequireIngredients

virtual bool Recipe.RequireIngredients
get

Definition at line 263 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 277 of file Recipe.cs.

◆ tileType

◆ W

virtual int Recipe.W
get

Definition at line 239 of file Recipe.cs.

240 {
241 get
242 {
243 if (_dir % 2 != 0)
244 {
245 return renderRow.H;
246 }
247 return renderRow.W;
248 }
249 }

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


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